27#if defined(__GNUC__) && (__GNUC__ >= 7) && (__cplusplus < 201703L)
28# pragma GCC diagnostic push
29# pragma GCC diagnostic ignored "-Wnoexcept-type"
30# pragma GCC diagnostic ignored "-Wignored-attributes"
31#elif defined(__GNUC__) && (__GNUC__ >= 6)
32# pragma GCC diagnostic push
33# pragma GCC diagnostic ignored "-Wignored-attributes"
53template <
typename R,
typename... Args>
56 static constexpr bool is_memfun =
false;
57 static constexpr bool is_const =
false;
58 static constexpr size_t nargs =
sizeof...(Args);
59 using result_type = R;
60 using args_type = std::tuple<Args...>;
61 using call_type = args_type;
64template <
typename R,
typename... Args>
67 static constexpr bool is_memfun =
false;
68 static constexpr bool is_const =
false;
69 static constexpr size_t nargs =
sizeof...(Args);
75template <
typename R,
typename... Args>
78 static constexpr bool is_memfun =
false;
79 static constexpr bool is_const =
false;
80 static constexpr size_t nargs =
sizeof...(Args);
87template <
typename C,
typename R,
typename... Args>
90 static constexpr bool is_memfun =
true;
91 static constexpr bool is_const =
false;
92 static constexpr size_t nargs =
sizeof...(Args);
99template <
typename C,
typename R,
typename... Args>
102 static constexpr bool is_memfun =
true;
103 static constexpr bool is_const =
true;
104 static constexpr size_t nargs =
sizeof...(Args);
111template <
typename C,
typename R>
114 static constexpr bool is_memfun =
true;
115 static constexpr bool is_const =
false;
116 static const size_t nargs = 0;
122#if __cplusplus >= 201703L
124template <
typename R,
typename... Args>
127 static constexpr bool is_memfun =
false;
128 static constexpr bool is_const =
false;
129 static constexpr size_t nargs =
sizeof...(Args);
130 using result_type = R;
131 using args_type = std::tuple<Args...>;
132 using call_type = args_type;
135template <
typename R,
typename... Args>
136struct function_traits<R (*)(Args...) noexcept>
138 static constexpr bool is_memfun =
false;
139 static constexpr bool is_const =
false;
140 static constexpr size_t nargs =
sizeof...(Args);
141 using result_type = R;
142 using args_type = std::tuple<Args...>;
143 using call_type = args_type;
146template <
typename R,
typename... Args>
147struct function_traits<R(Args...) noexcept>
149 static constexpr bool is_memfun =
false;
150 static constexpr bool is_const =
false;
151 static constexpr size_t nargs =
sizeof...(Args);
152 using result_type = R;
153 using args_type = std::tuple<Args...>;
154 using call_type = args_type;
158template <
typename C,
typename R,
typename... Args>
159struct function_traits<R (C::*)(Args...) noexcept>
161 static constexpr bool is_memfun =
true;
162 static constexpr bool is_const =
false;
163 static constexpr size_t nargs =
sizeof...(Args);
164 using result_type = R;
165 using args_type = std::tuple<Args...>;
166 using call_type = std::tuple<C&, Args...>;
170template <
typename C,
typename R,
typename... Args>
171struct function_traits<R (C::*)(Args...) const noexcept>
173 static constexpr bool is_memfun =
true;
174 static constexpr bool is_const =
true;
175 static constexpr size_t nargs =
sizeof...(Args);
176 using result_type = R;
177 using args_type = std::tuple<Args...>;
178 using call_type = std::tuple<C&, Args...>;
186#if defined(__GNUC__) && (__GNUC__ >= 7) && (__cplusplus < 201703L)
187# pragma GCC diagnostic pop
188#elif defined(__GNUC__) && (__GNUC__ >= 6)
189# pragma GCC diagnostic pop
std::tuple< Args... > args_type
std::tuple< Args... > args_type
std::tuple< C &, Args... > call_type
std::tuple< Args... > args_type
std::tuple< Args... > args_type
std::tuple< C &, Args... > call_type
std::tuple< C & > call_type