// (C) Copyright John Maddock & Thorsten Ottosen 2005. // Use, modification and distribution are subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt). // // See http://www.boost.org/libs/type_traits for most recent version including documentation. #ifndef BOOST_TT_DECAY_HPP_INCLUDED #define BOOST_TT_DECAY_HPP_INCLUDED #include #include #include #include #include #include namespace boost { namespace detail { template struct decay_imp { typedef typename remove_cv::type type; }; template struct decay_imp { typedef typename remove_bounds::type* type; }; template struct decay_imp { typedef T* type; }; } template< class T > struct decay { private: typedef typename remove_reference::type Ty; public: typedef typename boost::detail::decay_imp::value, boost::is_function::value>::type type; }; #if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) template using decay_t = typename decay::type; #endif } // namespace boost #endif // BOOST_TT_DECAY_HPP_INCLUDED