The standard idiom seems to be to create n = std::thread::hardware_concurrency() threads and place them into a thread pool. But the main thread is a thread like any other, hence we might create just n - 1 threads and consider the main thread a part of the thread pool and save some resources. Is there any reason why this should not be done?