Boost logo

Boost :

Subject: [boost] [config] MSCV 10 defines BOOST_NO_CXX11_HDR_TUPLE with a C++03 implementation
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2013-01-05 12:16:51


Hi,

The current implementation of boost::make_unique_locks needs a
std::tuple with C++11 move semantics.*

*MSCV 10 provides <tuple> and rvalue references so that
BOOST_NO_CXX11_HDR_TUPLE and BOOST_NO_CXX11_RVALUE_REFERENCES are not
defined.
However I suspect that the implementation provided by <tuple> with this
version is the one corresponding to TR1 and doesn't provide move
semantics as the message in http://tinyurl.com/atjdoh3 could let think.

Could someone confirm my suspicion?*

*Is there a way to request MSVC 10 to not import TR1 files?

Should BOOST_NO_CXX11_HDR_TUPLE be defined for MSVC 10 as it doesn't
implements the c++11 semantics while BOOST_NO_HDR_TUPLE could be undefined?
*
*Best,
Vicente

**
Test output: id - thread - make_unique_locks__mutex_p / msvc-10.0
Rev 82343 / Thu, 3 Jan 2013 23:15:13 +0000
*Report Time: *Sat, 5 Jan 2013 12:53:31 +0000
Compile [2013-01-04 08:34:35 UTC]: fail

     call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 >nul
cl /Zm800 -nologo @"c:\boost\regression\trunk\results\boost\bin.v2\libs\thread\test\make_unique_locks__mutex_p.test\msvc-10.0\debug\threading-multi\sync\mutual_exclusion\locks\unique_lock\cons\make_unique_locks_mutex_pass.obj.rsp"

make_unique_locks_mutex_pass.cpp
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\tuple(79) : error C2558: class 'boost::unique_lock<Mutex>' : no copy constructor available or copy constructor is declared 'explicit'
         with
         [
             Mutex=boost::mutex
         ]
         c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\tuple(77) : while compiling class template member function 'std::tr1::_Cons_node<_Car,_Cdr>::_Cons_node(const std::tr1::_Cons_node<_Car,_Cdr> &)'
         with
         [
             _Car=boost::unique_lock<boost::mutex>,
             _Cdr=std::tr1::_Cons_node<boost::unique_lock<boost::mutex>,std::tr1::_Cons_node<boost::unique_lock<boost::mutex>,std::tr1::_Tuple_type<std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil>::_Type>>
         ]
         c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\tuple(479) : see reference to class template instantiation 'std::tr1::_Cons_node<_Car,_Cdr>' being compiled
         with
         [
             _Car=boost::unique_lock<boost::mutex>,
             _Cdr=std::tr1::_Cons_node<boost::unique_lock<boost::mutex>,std::tr1::_Cons_node<boost::unique_lock<boost::mutex>,std::tr1::_Tuple_type<std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil,std::tr1::_Nil>::_Type>>
         ]
         ..\libs\thread\test\sync\mutual_exclusion\locks\unique_lock\cons\make_unique_locks_mutex_pass.cpp(41) : see reference to class template instantiation 'std::tr1::tuple<_Arg0,_Arg1,_Arg2,_Arg3,_Arg4,_Arg5,_Arg6,_Arg7,_Arg8,_Arg9>' being compiled
         with
         [
             _Arg0=boost::unique_lock<boost::mutex>,
             _Arg1=boost::unique_lock<boost::mutex>,
             _Arg2=boost::unique_lock<boost::mutex>,
             _Arg3=std::tr1::_Nil,
             _Arg4=std::tr1::_Nil,
             _Arg5=std::tr1::_Nil,
             _Arg6=std::tr1::_Nil,
             _Arg7=std::tr1::_Nil,
             _Arg8=std::tr1::_Nil,
             _Arg9=std::tr1::_Nil

*
*


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk