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 |