8#include "../../slots/direct_out.hpp"
22template <
typename T,
typename =
void>
31template <
typename R,
typename...
Args>
37 static constexpr std::size_t arity =
sizeof...(Args);
40 template <std::
size_t I>
41 using arg = std::tuple_element_t<
I, std::tuple<
Args...>>;
44template <
typename R,
typename...
Args>
47template <
typename R,
typename...
Args>
50template <
typename R,
typename...
Args>
53template <
typename R,
typename...
Args>
56template <
typename C,
typename R,
typename...
Args>
59template <
typename C,
typename R,
typename...
Args>
62template <
typename C,
typename R,
typename...
Args>
65template <
typename C,
typename R,
typename...
Args>
71 std::
void_t<decltype(&std::remove_reference_t<F>::operator())>>
72 :
function_traits<decltype(&std::remove_reference_t<F>::operator())> {};
76 : std::bool_constant<std::is_member_function_pointer_v<std::remove_cvref_t<T>>> {};
82template <
typename T,
typename =
void>
85template <
typename C,
typename R,
typename...
Args>
91 static constexpr std::size_t arity =
sizeof...(Args);
93 template <std::
size_t I>
94 using arg = std::tuple_element_t<
I, std::tuple<
Args...>>;
97template <
typename C,
typename R,
typename...
Args>
101template <
typename C,
typename R,
typename...
Args>
107 static constexpr std::size_t arity =
sizeof...(Args);
109 template <std::
size_t I>
110 using arg = std::tuple_element_t<
I, std::tuple<
Args...>>;
113template <
typename C,
typename R,
typename...
Args>
117template <std::
size_t I,
typename F>
137 std::remove_reference_t<member_receiver_arg_t<F>>;
139template <std::
size_t I,
typename F>
173template <
typename T,
typename =
void>
225template <
typename F,
typename...
Specs>
230template <
typename F,
typename ReceiverSpec>
234template <
typename F,
typename...
Specs>
239template <
typename T,
typename F,
typename...
Specs>
244 std::remove_cvref_t<
last_arg_t<std::remove_cvref_t<F>>>,
247template <
typename T,
typename F,
typename...
Specs>
255template <
typename F,
typename...
Specs>
260template <
typename F,
typename...
Specs>
265template <
typename F,
typename...
Specs>
typename member_function_traits< std::remove_cvref_t< F > >::template arg< I > member_nth_arg_t
typename function_traits< std::remove_cvref_t< F > >::template arg< I > nth_arg_t
typename member_function_traits< std::remove_cvref_t< F > >::result_type member_result_t
typename direct_out_payload< T >::type direct_out_payload_t
nth_arg_t< last_arg_index_v< F >, F > last_arg_t
constexpr std::size_t member_last_arg_index_v
constexpr bool is_member_function_pointer_callable_v
typename function_traits< std::remove_cvref_t< F > >::result_type result_t
typename member_function_traits< std::remove_cvref_t< F > >::receiver_arg_type member_receiver_arg_t
constexpr bool direct_out_arg_v
std::remove_reference_t< member_receiver_arg_t< F > > member_borrowed_receiver_t
constexpr std::size_t last_arg_index_v
typename member_function_traits< std::remove_cvref_t< F > >::class_type member_class_t
member_nth_arg_t< member_last_arg_index_v< F >, F > member_last_arg_t
constexpr bool is_adapter_descriptor_v
constexpr auto value(T &&v) -> value_t< std::remove_cvref_t< T > >
Wraps a value as an owning spec.
R result_type
Function return type.
std::tuple_element_t< I, std::tuple< Args... > > arg
Alias to the I-th parameter type.
Extracts the canonical function signature information of a callable.
const C & receiver_arg_type
std::tuple_element_t< I, std::tuple< Args... > > arg
std::tuple_element_t< I, std::tuple< Args... > > arg
Output sink passed to direct-output tasks.