#define BOOST_MOVE_TO_RV_CAST(RV_TYPE, ARG) reinterpret_cast<RV_TYPE>(ARG)
//Move emulation rv breaks standard aliasing rules so add workarounds for some compilers
- #define BOOST_MOVE_ATTRIBUTE_MAY_ALIAS BOOST_MAY_ALIAS
+ #if defined(BOOST_GCC) && (BOOST_GCC >= 40400) && (BOOST_GCC < 40500)
+ #define BOOST_RV_ATTRIBUTE_MAY_ALIAS BOOST_MAY_ALIAS
+ #else
+ #define BOOST_RV_ATTRIBUTE_MAY_ALIAS
+ #endif
namespace boost {
//
//////////////////////////////////////////////////////////////////////////////
template <class T>
- class rv
+ class BOOST_RV_ATTRIBUTE_MAY_ALIAS rv
: public ::boost::move_detail::if_c
< ::boost::move_detail::is_class<T>::value
, T
~rv() throw();
rv(rv const&);
void operator=(rv const&);
- } BOOST_MOVE_ATTRIBUTE_MAY_ALIAS;
+ };
//////////////////////////////////////////////////////////////////////////////