diff --git a/include/boost/type_traits/decay.hpp b/include/boost/type_traits/decay.hpp index 1e978b2..81f5303 100755 --- a/include/boost/type_traits/decay.hpp +++ b/include/boost/type_traits/decay.hpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -23,13 +24,16 @@ namespace boost template< class T > struct decay { - typedef typename mpl::eval_if< - is_array, - mpl::identity::type*>, - typename mpl::eval_if< - is_function, - add_pointer, - mpl::identity + private: + typedef BOOST_DEDUCED_TYPENAME remove_reference::type Ty; + public: + typedef BOOST_DEDUCED_TYPENAME mpl::eval_if< + is_array, + mpl::identity::type*>, + BOOST_DEDUCED_TYPENAME mpl::eval_if< + is_function, + add_pointer, + mpl::identity > >::type type; };