1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- // (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 <boost/type_traits/config.hpp>
- #include <boost/type_traits/is_array.hpp>
- #include <boost/type_traits/is_function.hpp>
- #include <boost/type_traits/remove_bounds.hpp>
- #include <boost/type_traits/add_pointer.hpp>
- #include <boost/type_traits/remove_reference.hpp>
- #include <boost/mpl/eval_if.hpp>
- #include <boost/mpl/identity.hpp>
- namespace boost
- {
- template< class T >
- struct decay
- {
- private:
- typedef BOOST_DEDUCED_TYPENAME remove_reference<T>::type Ty;
- public:
- typedef BOOST_DEDUCED_TYPENAME mpl::eval_if<
- is_array<Ty>,
- mpl::identity<BOOST_DEDUCED_TYPENAME remove_bounds<Ty>::type*>,
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
- is_function<Ty>,
- add_pointer<Ty>,
- mpl::identity<Ty>
- >
- >::type type;
- };
-
- } // namespace boost
- #endif // BOOST_TT_DECAY_HPP_INCLUDED
|