31#ifndef ETL_FUNCTION_TRAITS_INCLUDED
32#define ETL_FUNCTION_TRAITS_INCLUDED
45 struct function_traits;
50 template <
typename TReturn,
typename... TArgs>
51 struct function_traits<TReturn(*)(TArgs...)>
53 using function_type = TReturn(TArgs...);
54 using return_type = TReturn;
55 using object_type = void;
58 static constexpr bool is_function =
true;
59 static constexpr bool is_member_function =
false;
60 static constexpr bool is_const =
false;
61 static constexpr size_t argument_count =
sizeof...(TArgs);
64 template <
typename TReturn,
typename... TArgs>
65 constexpr bool function_traits<TReturn(*)(TArgs...)>::is_function;
67 template <
typename TReturn,
typename... TArgs>
68 constexpr bool function_traits<TReturn(*)(TArgs...)>::is_member_function;
70 template <
typename TReturn,
typename... TArgs>
71 constexpr bool function_traits<TReturn(*)(TArgs...)>::is_const;
73 template <
typename TReturn,
typename... TArgs>
74 constexpr size_t function_traits<TReturn(*)(TArgs...)>::argument_count;
79 template <
typename TReturn,
typename TObject,
typename... TArgs>
80 struct function_traits<TReturn(TObject::*)(TArgs...)>
89 static constexpr bool is_const =
false;
93 template <
typename TReturn,
typename TObject,
typename... TArgs>
94 constexpr bool function_traits<TReturn(TObject::*)(TArgs...)>::is_function;
96 template <
typename TReturn,
typename TObject,
typename... TArgs>
97 constexpr bool function_traits<TReturn(TObject::*)(TArgs...)>::is_member_function;
99 template <
typename TReturn,
typename TObject,
typename... TArgs>
100 constexpr bool function_traits<TReturn(TObject::*)(TArgs...)>::is_const;
102 template <
typename TReturn,
typename TObject,
typename... TArgs>
103 constexpr size_t function_traits<TReturn(TObject::*)(TArgs...)>::argument_count;
108 template <
typename TReturn,
typename TObject,
typename... TArgs>
109 struct function_traits<TReturn(TObject::*)(TArgs...) const>
118 static constexpr bool is_const =
true;
122 template <
typename TReturn,
typename TObject,
typename... TArgs>
123 constexpr bool function_traits<TReturn(TObject::*)(TArgs...) const>::is_function;
125 template <
typename TReturn,
typename TObject,
typename... TArgs>
126 constexpr bool function_traits<TReturn(TObject::*)(TArgs...) const>::is_member_function;
128 template <
typename TReturn,
typename TObject,
typename... TArgs>
129 constexpr bool function_traits<TReturn(TObject::*)(TArgs...) const>::is_const;
131 template <
typename TReturn,
typename TObject,
typename... TArgs>
132 constexpr size_t function_traits<TReturn(TObject::*)(TArgs...) const>::argument_count;
bitset_ext
Definition absolute.h:38
pair holds two objects of arbitrary type
Definition utility.h:164
ETL_CONSTEXPR pair()
Default constructor.
Definition utility.h:176