5#include "../../detail/bind/traits.hpp"
6#include "../../specs.hpp"
20 std::is_const_v<std::remove_reference_t<member_receiver_arg_t<F>>>;
22template <
typename Spec>
30 template <
typename Arg>
45 template <
typename Arg>
47 std::is_same_v<Arg, const payload_type&>;
51 std::is_same_v<payload_type, member_class_t<F>> &&
63 template <
typename Arg>
65 std::is_same_v<Arg, payload_type&>;
69 std::is_same_v<payload_type, member_class_t<F>>;
80 template <
typename Arg>
82 std::is_same_v<Arg, payload_type>;
86 std::is_same_v<payload_type, member_class_t<F>>;
97 template <
typename Arg>
99 std::is_same_v<Arg, payload_type> ||
100 std::is_same_v<Arg, payload_type&&>;
102 template <
typename F>
104 std::is_same_v<payload_type, member_class_t<F>>;
107template <
typename Spec>
111template <
typename Spec>
113 : std::bool_constant<
114 normalized_prev_access_spec_traits<Spec>::kind ==
115 prev_access_kind::borrow> {};
117template <
typename Spec>
121template <
typename Spec>
123 : std::bool_constant<
124 normalized_prev_access_spec_traits<Spec>::kind ==
125 prev_access_kind::borrow_mut> {};
127template <
typename Spec>
131template <
typename Spec>
133 : std::bool_constant<
134 normalized_prev_access_spec_traits<Spec>::kind ==
135 prev_access_kind::copy> {};
137template <
typename Spec>
141template <
typename Spec>
143 : std::bool_constant<
144 normalized_prev_access_spec_traits<Spec>::kind ==
145 prev_access_kind::consume> {};
147template <
typename Spec>
151template <
typename Spec>
155template <
typename Spec>
159template <
typename Spec,
typename Arg>
161 : std::bool_constant<
162 normalized_prev_access_spec_traits<Spec>::template matches_arg<Arg>> {};
164template <
typename Spec,
typename Arg>
168template <
typename Spec,
typename F>
170 : std::bool_constant<
171 normalized_prev_access_spec_traits<Spec>::template matches_member_receiver<
172 std::remove_cvref_t<F>>> {};
174template <
typename Spec,
typename F>
constexpr bool is_consume_prev_spec_v
constexpr bool is_borrow_prev_spec_v
constexpr bool is_prev_access_spec_v
constexpr bool is_exclusive_prev_access_spec_v
constexpr bool member_receiver_is_const_v
constexpr bool member_receiver_prev_access_valid_v
constexpr bool prev_access_binding_valid_v
constexpr bool is_borrow_prev_mut_spec_v
constexpr bool is_copy_prev_spec_v
constexpr bool is_adapter_descriptor_v
Describes a parameter that borrows the direct parent output as T&.
std::remove_cvref_t< T > type
Canonical parent payload type used for lookup.
Describes a parameter that borrows the direct parent output as const T&.
std::remove_cvref_t< T > type
Canonical parent payload type used for lookup.
Describes a parameter that consumes the direct parent output.
std::remove_cvref_t< T > type
Canonical parent payload type used for lookup.
Describes a parameter that copies the direct parent output as T.
std::remove_cvref_t< T > type
Canonical parent payload type used for lookup.
typename borrow_prev_mut_t< T >::type payload_type
typename borrow_prev_t< T >::type payload_type
typename consume_prev_t< T >::type payload_type
typename copy_prev_t< T >::type payload_type
static constexpr bool matches_member_receiver
static constexpr bool is_prev_access
static constexpr bool matches_arg
static constexpr bool is_exclusive
static constexpr prev_access_kind kind