Fixed error with convertible types in move helpers

[SVN r74260]
This commit is contained in:
Ion Gaztañaga
2011-09-06 11:44:20 +00:00
parent 664d8ba073
commit 4dacaf7bef
2 changed files with 11 additions and 11 deletions

View File

@ -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 <class I>
struct is_move_iterator
: public BOOST_MOVE_MPL_NS::integral_constant<bool, false>
: public BOOST_MOVE_BOOST_NS::integral_constant<bool, false>
{
};
template <class I>
struct is_move_iterator< ::boost::move_iterator<I> >
: public BOOST_MOVE_MPL_NS::integral_constant<bool, true>
: public BOOST_MOVE_BOOST_NS::integral_constant<bool, true>
{
};

View File

@ -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<T>, BOOST_CATCH_CONST_RLVALUE(U), const U &>::type
typename ::boost::mpl::if_< ::boost::is_class<U>, BOOST_CATCH_CONST_RLVALUE(U), const U &>::type
#define BOOST_MOVE_CATCH_RVALUE(U)\
typename ::boost::mpl::if_< ::boost::is_class<T>, BOOST_RV_REF(T), not_a_type>::type
typename ::boost::mpl::if_< ::boost::is_class<U>, 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<class BOOST_MOVE_TEMPL_PARAM>\
typename ::boost::enable_if_c\
< ::boost::is_class<BOOST_MOVE_TEMPL_PARAM>::value &&\
!::boost::is_same<TYPE, BOOST_MOVE_TEMPL_PARAM>::value &&\
!::boost::move_detail::is_rv<BOOST_MOVE_TEMPL_PARAM>::value\
< (!::boost::is_class<BOOST_MOVE_TEMPL_PARAM>::value || \
!::boost::move_detail::is_rv<BOOST_MOVE_TEMPL_PARAM>::value) && \
!::boost::is_same<TYPE, BOOST_MOVE_TEMPL_PARAM>::value \
, RETURN_VALUE >::type\
PUB_FUNCTION(const BOOST_MOVE_TEMPL_PARAM &u)\
{\
@ -127,9 +127,9 @@ struct not_a_type;
\
template<class BOOST_MOVE_TEMPL_PARAM>\
typename ::boost::enable_if_c\
< ::boost::is_class<BOOST_MOVE_TEMPL_PARAM>::value &&\
!::boost::is_same<TYPE, BOOST_MOVE_TEMPL_PARAM>::value &&\
!::boost::move_detail::is_rv<BOOST_MOVE_TEMPL_PARAM>::value\
< (!::boost::is_class<BOOST_MOVE_TEMPL_PARAM>::value || \
!::boost::move_detail::is_rv<BOOST_MOVE_TEMPL_PARAM>::value) && \
!::boost::is_same<TYPE, BOOST_MOVE_TEMPL_PARAM>::value \
, RETURN_VALUE >::type\
PUB_FUNCTION(ARG1 arg1, const BOOST_MOVE_TEMPL_PARAM &u)\
{\