9 template<
typename Ret,
typename...Args>
11 using type = std::tuple<Args...>;
14 template<
typename Ret,
typename Obj,
typename...Args>
16 using type = std::tuple<Args...>;
18 template<
typename Ret,
typename Obj,
typename...Args>
20 using type = std::tuple<Args...>;
22 template<
typename Fun>
23 concept is_fun = std::is_function_v<Fun>;
25 template<
typename Fun>
26 concept is_mem_fun = std::is_member_function_pointer_v<std::decay_t<Fun>>;
28 template<
typename Fun>
29 concept is_functor = std::is_class_v<std::decay_t<Fun>> &&
requires(Fun && t) {
30 &std::decay_t<Fun>::operator();
33 template<is_functor T>
34 using functor_args_t =
typename signature<
decltype(&std::decay_t<T>::operator())>::type;
36 template<is_functor T>
37 auto arguments(T&& t) ->
typename signature<
decltype(&std::decay_t<T>::operator())>::type;
39 template<is_functor T>
40 auto arguments(
const T& t) ->
typename signature<
decltype(&std::decay_t<T>::operator())>::type;
48 template<is_mem_fun T>
51 template<is_mem_fun T>
Definition concurrentqueue.h:747
Definition CallableTraits.hpp:23
Definition CallableTraits.hpp:29
Definition CallableTraits.hpp:26
Definition Animation.hpp:6
Definition CallableTraits.hpp:8