When I attempt to compile a project using boost::interprocess I get compile errors when I include managed_mapped_file.hpp when using VC10. I can create a simple project that is just the following code:
#include
int main(int argc, char* argv[])
{
return 0;
}
When compiling, I get the following errors:
Empty.cpp
c:\lib\boost_1_44_0\boost\interprocess\detail\move.hpp(342): error C2440: 'return' : cannot convert from 'boost::interprocess::mapped_region' to 'boost::interprocess::mapped_region &&'
You cannot bind an lvalue to an rvalue reference
c:\lib\boost_1_44_0\boost\interprocess\mapped_region.hpp(159) : see reference to function template instantiation 'boost::interprocess::mapped_region &&boost::interprocess::moveboost::interprocess::mapped_region&(T)' being compiled
with
[
T=boost::interprocess::mapped_region &
]
c:\lib\boost_1_44_0\boost\interprocess\detail\move.hpp(342): error C2440: 'return' : cannot convert from 'boost::interprocess::detail::file_wrapper' to 'boost::interprocess::detail::file_wrapper &&'
You cannot bind an lvalue to an rvalue reference
c:\lib\boost_1_44_0\boost\interprocess\detail\file_wrapper.hpp(63) : see reference to function template instantiation 'boost::interprocess::detail::file_wrapper &&boost::interprocess::moveboost::interprocess::detail::file_wrapper&(T)' being compiled
with
[
T=boost::interprocess::detail::file_wrapper &
]
c:\lib\boost_1_44_0\boost\interprocess\detail\move.hpp(342): error C2440: 'return' : cannot convert from 'boost::interprocess::file_mapping' to 'boost::interprocess::file_mapping &&'
You cannot bind an lvalue to an rvalue reference
c:\lib\boost_1_44_0\boost\interprocess\file_mapping.hpp(62) : see reference to function template instantiation 'boost::interprocess::file_mapping &&boost::interprocess::moveboost::interprocess::file_mapping&(T)' being compiled
with
[
T=boost::interprocess::file_mapping &
]
When I look at move.hpp(342) I find the following code:
#if defined(BOOST_MOVE_DOXYGEN_INVOKED)
...unused code...
#else
template <class T> inline
typename remove_reference<T>::type&& move(T&& t)
{ return t; }
#endif
It is complaining about the "return t;" statement. I have just moved up from boost 1.43, where I have been working without problems with VC10.
Is there something I should be doing to prevent this, or is it a bug?