function_traits.hpp
1 
7 #ifndef PRE_TYPE_TRAITS_FUNCTION_TRAITS_HPP
8 #define PRE_TYPE_TRAITS_FUNCTION_TRAITS_HPP
9 
10 #include <pre/type_traits/detail/function_traits_impl.hpp>
11 
12 namespace pre { namespace type_traits {
13 
49  template<typename F, typename = void>
51 
52  template<typename F>
53  struct function_traits<F, detail::enable_if_is_lambda_t<F> >
54  : public detail::function_traits_impl<decltype(&F::operator())> {};
55 
56  template<typename F>
57  struct function_traits<F, detail::enable_if_is_function_t<F> >
58  : public detail::function_traits_impl<typename std::remove_pointer<F>::type> {};
59 
60  template<typename F>
61  struct function_traits<F, detail::enable_if_is_function_member_pointer_t<F> >
62  : public detail::function_traits_impl_member<F> {};
63 
64 
65 }}
66 
67 
68 #endif /*PRE_TYPE_TRAITS_FUNCTION_TRAITS_HPP*/
Provides access to lambda and functions arity, return type, arguments type and access as std::functio...
Definition: function_traits.hpp:50