diff options
Diffstat (limited to 'boost/function_types/function_arity.hpp')
-rw-r--r-- | boost/function_types/function_arity.hpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/boost/function_types/function_arity.hpp b/boost/function_types/function_arity.hpp new file mode 100644 index 0000000000..40f0f653cc --- /dev/null +++ b/boost/function_types/function_arity.hpp @@ -0,0 +1,38 @@ + +// (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_FUNCTION_ARITY_HPP_INCLUDED +#define BOOST_FT_FUNCTION_ARITY_HPP_INCLUDED + +#include <boost/blank.hpp> +#include <boost/mpl/if.hpp> + +#include <boost/mpl/aux_/lambda_support.hpp> +#include <boost/type_traits/detail/template_arity_spec.hpp> + +#include <boost/function_types/is_callable_builtin.hpp> +#include <boost/function_types/components.hpp> + +namespace boost +{ + namespace function_types + { + template<typename T> struct function_arity + : mpl::if_ + < function_types::is_callable_builtin<T> + , typename components<T>::function_arity, boost::blank + >::type + { + BOOST_MPL_AUX_LAMBDA_SUPPORT(1,function_arity,(T)) + }; + } + BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1,function_types::function_arity) +} + +#endif + |