diff --git a/include/boost/move/move.hpp b/include/boost/move/move.hpp index 86cd032..0a289fc 100644 --- a/include/boost/move/move.hpp +++ b/include/boost/move/move.hpp @@ -121,7 +121,7 @@ class false_t { char dummy[2]; }; static true_t dispatch(U); static false_t dispatch(...); - static T trigger(); + static T &trigger(); public: enum { value = sizeof(dispatch(trigger())) == sizeof(true_t) }; }; @@ -718,13 +718,13 @@ namespace move_detail { template struct is_move_iterator - : public BOOST_MOVE_MPL_NS::integral_constant + : public BOOST_MOVE_BOOST_NS::integral_constant { }; template struct is_move_iterator< ::boost::move_iterator > - : public BOOST_MOVE_MPL_NS::integral_constant + : public BOOST_MOVE_BOOST_NS::integral_constant { }; diff --git a/include/boost/move/move_helpers.hpp b/include/boost/move/move_helpers.hpp index 92e052e..eaf51d6 100644 --- a/include/boost/move/move_helpers.hpp +++ b/include/boost/move/move_helpers.hpp @@ -27,9 +27,9 @@ #if defined(BOOST_NO_RVALUE_REFERENCES) struct not_a_type; #define BOOST_MOVE_CATCH_CONST(U) \ - typename ::boost::mpl::if_< ::boost::is_class, BOOST_CATCH_CONST_RLVALUE(U), const U &>::type + typename ::boost::mpl::if_< ::boost::is_class, BOOST_CATCH_CONST_RLVALUE(U), const U &>::type #define BOOST_MOVE_CATCH_RVALUE(U)\ - typename ::boost::mpl::if_< ::boost::is_class, BOOST_RV_REF(T), not_a_type>::type + typename ::boost::mpl::if_< ::boost::is_class, BOOST_RV_REF(U), not_a_type>::type #define BOOST_MOVE_CATCH_FWD(U) BOOST_FWD_REF(U) #else #define BOOST_MOVE_CATCH_CONST(U) const U & @@ -60,9 +60,9 @@ struct not_a_type; \ template\ typename ::boost::enable_if_c\ - < ::boost::is_class::value &&\ - !::boost::is_same::value &&\ - !::boost::move_detail::is_rv::value\ + < (!::boost::is_class::value || \ + !::boost::move_detail::is_rv::value) && \ + !::boost::is_same::value \ , RETURN_VALUE >::type\ PUB_FUNCTION(const BOOST_MOVE_TEMPL_PARAM &u)\ {\ @@ -127,9 +127,9 @@ struct not_a_type; \ template\ typename ::boost::enable_if_c\ - < ::boost::is_class::value &&\ - !::boost::is_same::value &&\ - !::boost::move_detail::is_rv::value\ + < (!::boost::is_class::value || \ + !::boost::move_detail::is_rv::value) && \ + !::boost::is_same::value \ , RETURN_VALUE >::type\ PUB_FUNCTION(ARG1 arg1, const BOOST_MOVE_TEMPL_PARAM &u)\ {\