Hello Gavin, On Tue, Nov 27, 2018 at 4:06 AM Gavin Lambert via Boost < boost@lists.boost.org> wrote:
To me this sounds like the application will always std::terminate() when launch::deferred is chosen. Why is that?
This implementation appears to be conditioned on BOOST_THREAD_PROVIDES_VARIADIC_THREAD -- it's implemented "properly" when that is defined.
In order to get that defined, you must be using at least a C++11
conformant compiler (and compilation mode) and have explicitly defined the following in all translation units that use Boost.Thread (prior to including it):
#define BOOST_THREAD_VERSION 4
Ah, this explains it. I have BOOST_THREAD_VERSION 3 explicitly defined because I couldn't be having with some of the version 4 behavior. Which is why I prefer boost threads over std threads in the first place. Thanks for the heads up. I will try to re-evaluate if I should go for version 4 after all but as I recall there were some strong reasons not to do it. At least now I know what I'm trading in for that. Cheers, Stephan