49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| // (C) Copyright Tobias Schwinger
 | |
| //
 | |
| // Use modification and distribution are subject to the boost Software License,
 | |
| // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| 
 | |
| #ifndef BOOST_FT_RESULT_TYPE_HPP_INCLUDED
 | |
| #define BOOST_FT_RESULT_TYPE_HPP_INCLUDED
 | |
| 
 | |
| #include <boost/blank.hpp>
 | |
| #include <boost/mpl/if.hpp>
 | |
| 
 | |
| #include <boost/mpl/aux_/lambda_support.hpp>
 | |
| 
 | |
| #include <boost/mpl/at.hpp>
 | |
| 
 | |
| #include <boost/function_types/is_callable_builtin.hpp>
 | |
| #include <boost/function_types/components.hpp>
 | |
| 
 | |
| namespace boost 
 | |
| { 
 | |
|   namespace function_types 
 | |
|   {
 | |
|     template< typename T > struct result_type;
 | |
| 
 | |
|     namespace detail
 | |
|     {
 | |
|       template<typename T> struct result_type_impl
 | |
|         : mpl::at_c
 | |
|           < typename function_types::components<T>::types, 0 >
 | |
|       { };
 | |
|     }
 | |
| 
 | |
|     template<typename T> struct result_type
 | |
|       : mpl::if_
 | |
|         < function_types::is_callable_builtin<T>
 | |
|         , detail::result_type_impl<T>, boost::blank
 | |
|         >::type
 | |
|     { 
 | |
|       BOOST_MPL_AUX_LAMBDA_SUPPORT(1,result_type,(T)) 
 | |
|     };
 | |
|   }
 | |
| }
 | |
| 
 | |
| #endif
 | |
| 
 | 
