1 2 // (C) Copyright Tobias Schwinger 3 // 4 // Use modification and distribution are subject to the boost Software License, 5 // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt). 6 7 //------------------------------------------------------------------------------ 8 9 #ifndef BOOST_FT_FUNCTION_ARITY_HPP_INCLUDED 10 #define BOOST_FT_FUNCTION_ARITY_HPP_INCLUDED 11 12 #include <boost/blank.hpp> 13 #include <boost/mpl/if.hpp> 14 15 #include <boost/mpl/aux_/lambda_support.hpp> 16 17 #include <boost/function_types/is_callable_builtin.hpp> 18 #include <boost/function_types/components.hpp> 19 20 namespace boost 21 { 22 namespace function_types 23 { 24 template<typename T> struct function_arity 25 : mpl::if_ 26 < function_types::is_callable_builtin<T> 27 , typename components<T>::function_arity, boost::blank 28 >::type 29 { 30 BOOST_MPL_AUX_LAMBDA_SUPPORT(1,function_arity,(T)) 31 }; 32 } 33 } 34 35 #endif 36 37