Le 06/09/13 18:01, Niall Douglas a écrit :
On 6 Sep 2013 at 14:54, Gavin Lambert wrote:
Am I doing something wrong in the following code? [snip] The internal error goes away if I remove the MOVABLE_ONLY macro or the future_node instance field. The equivalent move code (using boost::detail::thread_move_t directly) for boost 1.47 compiles and works successfully (but crashes again if I switch to boost 1.53).
Is this a regression in boost or am I doing something incorrect somewhere? Does anyone know of a workaround? As related information, but not solving your specific problem, we had terrible problems in proposed Boost.AFIO with ICEs in Visual Studios preceding 2012. VS2012 and later seems much happier with Boost.
A lot of changes have been made to Boost.Thread in recent editions to match APIs with the C++11 standard library. That, inevitably, will cause older compilers some parsing difficulties, even in C++03 mode (e.g. good luck getting VS2010 to not ICE with function types as template parameters). In AFIO we certainly had to do a LOT of rewriting code via trial and error until VS2010 wouldn't ICE.
Hope that helps. Niall, I don't know if you are referring to difficulties with your usage of Boost.Thread or simply VS2010. If you have found some abnormal behavior in Boost.Thread, please state it explicitly, and I will try to help.
Best, Vicente