diff options
Diffstat (limited to '3rdParty/Boost/src/boost/function_types/parameter_types.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/function_types/parameter_types.hpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/3rdParty/Boost/src/boost/function_types/parameter_types.hpp b/3rdParty/Boost/src/boost/function_types/parameter_types.hpp new file mode 100644 index 0000000..5e049bf --- /dev/null +++ b/3rdParty/Boost/src/boost/function_types/parameter_types.hpp @@ -0,0 +1,55 @@ + +// (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_PARAMETER_TYPES_HPP_INCLUDED +#define BOOST_FT_PARAMETER_TYPES_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/mpl/pop_front.hpp> + +#include <boost/function_types/is_callable_builtin.hpp> +#include <boost/function_types/components.hpp> + +namespace boost +{ + namespace function_types + { + using mpl::placeholders::_; + + template< typename T, typename ClassTypeTransform = add_reference<_> > + struct parameter_types; + + namespace detail + { + template<typename T, typename ClassTypeTransform> + struct parameter_types_impl + : mpl::pop_front + < typename function_types::components<T,ClassTypeTransform>::types + >::type + { }; + } + + template<typename T, typename ClassTypeTransform> struct parameter_types + : mpl::if_ + < function_types::is_callable_builtin<T> + , detail::parameter_types_impl<T,ClassTypeTransform>, boost::blank + >::type + { + BOOST_MPL_AUX_LAMBDA_SUPPORT(2,parameter_types,(T,ClassTypeTransform)) + }; + } + BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(2,function_types::parameter_types) +} + +#endif + |