
On 7/09/2013 20:00, Quoth Vicente J. Botet Escriba:
Bug 1: the Boost.Thread documentation and release history indicate that BOOST_THREAD_VERSION==3 is the default since v1.52. [...] Please could you point me where in the documentation this misinformation is still there?
As noted, in the release history. http://www.boost.org/doc/libs/1_54_0/doc/html/thread/changes.html See the "boost 1.52" and "boost 1.51" subheadings.
Suggested fix is to explicitly specify the namespace in the macro, eg. replace "enable_move_utility_emulation" with "::boost::enable_move_utility_emulation".
Humm, I don't know if this is correct. In any case I didn't know that we could specialize templates this way. Could some one confirm this kind of specializations is portable?
It works fine for me in VC9, but as you've discovered it's apparently not valid in GCC. So I guess this is non-portable and we'll just have to live with the escape into the boost namespace. (I still don't like it though, but I realise your hands are tied.) Although, have you tried it without the initial "::"? That seems to be what GCC is actually objecting to, and theoretically the construct should still work without that as long as nobody defines some other boost subnamespace to introduce ambiguity (which would be silly anyway). Though the proposal you found suggests that this may not be universally valid either.