Index: boost/move/core.hpp =================================================================== --- boost/move/core.hpp (revision 6599) +++ boost/move/core.hpp (revision 6600) @@ -50,6 +50,19 @@ void operator=(rv const&); } BOOST_MOVE_ATTRIBUTE_MAY_ALIAS; + ////////////////////////////////////////////////////////////////////////////// + // + // struct rv_wrapper + // + ////////////////////////////////////////////////////////////////////////////// + template + class rv_wrapper + { + ::boost::rv& ref_; + public: + rv_wrapper(::boost::rv& iref) : ref_(iref) {} + operator ::boost::rv& () { return ref_; } + }; ////////////////////////////////////////////////////////////////////////////// // @@ -118,6 +131,9 @@ >& \ // + #define BOOST_RV_REF_WRAPPER(TYPE)\ + ::boost::rv_wrapper< TYPE > + #define BOOST_FWD_REF(TYPE)\ const TYPE & \ // @@ -269,6 +285,14 @@ const TYPE & \ // + //!This macro is used to achieve portable syntax in move + //!constructors and assignments for classes marked as + //!BOOST_COPYABLE_AND_MOVABLE or BOOST_MOVABLE_BUT_NOT_COPYABLE + //!It should be used in order to avoid implicit conversion of a + //!type into boost::rv. + #define BOOST_RV_REF_WRAPPER(TYPE)\ + BOOST_RV_REF( TYPE ) + //! This macro is used to implement portable perfect forwarding //! as explained in the documentation. #define BOOST_FWD_REF(TYPE)\