44 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //  (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/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/type_traits/remove_cv.hpp>
 | |
| 
 | |
| namespace boost 
 | |
| {
 | |
| 
 | |
|    namespace detail
 | |
|    {
 | |
| 
 | |
|       template <class T, bool Array, bool Function> struct decay_imp { typedef typename remove_cv<T>::type type; };
 | |
|       template <class T> struct decay_imp<T, true, false> { typedef typename remove_bounds<T>::type* type; };
 | |
|       template <class T> struct decay_imp<T, false, true> { typedef T* type; };
 | |
| 
 | |
|    }
 | |
| 
 | |
|     template< class T >
 | |
|     struct decay
 | |
|     {
 | |
|     private:
 | |
|         typedef typename remove_reference<T>::type Ty;
 | |
|     public:
 | |
|        typedef typename boost::detail::decay_imp<Ty, boost::is_array<Ty>::value, boost::is_function<Ty>::value>::type type;
 | |
|     };
 | |
|     
 | |
| } // namespace boost
 | |
| 
 | |
| 
 | |
| #endif // BOOST_TT_DECAY_HPP_INCLUDED
 | 
