Здравствуйте, Максим Рогожин, Вы писали:
МР>К моменту вызова t.join() поток t уже мог завершиться, но тем не менее по стандарту все равно требуется вызвать либо join() либо detach() перед деструктором std::thread — иначе деструктор std::tread зовет std::terminate(). Объясните, пожалуйста, почему такое требование?
Чтобы не плодились ничейные висячие треды, очевидно. Этакий предохранитель.