24template<
typename... Types>
26 :
public TupleImpl<meta::IndexSequenceFor<Types...>, Types...>
27 ,
public util::AddMemberGet<Tuple<Types...>> {
39 constexpr Tuple(Types
const&... args)
43 template<
typename... Args>
44 requires(
sizeof...(Types) ==
sizeof...(Args) &&
sizeof...(Types) > 0 &&
48 template<
typename Tup>
79 template<concepts::TupleLike Tup>
81 requires(Base& self, Tup&& other) { Base::static_assign(self, util::forward<Tup>(other)); })
82 constexpr auto operator=(Tup&& other) ->
Tuple& {
87 template<concepts::TupleLike Tup>
89 requires(Base
const& self, Tup&& other) { Base::static_assign(self, util::forward<Tup>(other)); })
90 constexpr auto operator=(Tup&& other)
const ->
Tuple const& {
96 template<
typename... Other>
97 requires(
sizeof...(Types) ==
sizeof...(Other) &&
106 template<
typename... Other>
107 requires(
sizeof...(Types) ==
sizeof...(Other) &&
111 if constexpr (
sizeof...(Types) == 0) {
112 return di::strong_ordering::equal;
118 if constexpr (index ==
sizeof...(Types) - 1) {
119 return di::strong_ordering::equal;
128 template<concepts::DerivedFrom<Tuple> Self = Tuple>
130 return sizeof...(Types);
135 template<types::
size_t index, concepts::DerivedFrom<Tuple> Self = Tuple>
141 template<types::
size_t index, concepts::DerivedFrom<Tuple> Self = Tuple>
147 template<types::
size_t index,
typename Self>
156 template<
typename T,
typename Self = Tuple>
160 constexpr auto index = meta::Lookup<T,
meta::List<Types...>>;
167template<
typename... Types>
173 template<
typename...>
176 template<
typename T, concepts::CommonWith<T> U>
180 template<
typename... Types>
184 template<
typename...>
187 template<
typename T, concepts::CommonWith<T> U>
191 template<
typename... Types>
196template<concepts::TupleLike A, concepts::TupleLike B>
205template<concepts::TupleLike A, concepts::TupleLike B,
template<
typename>
typename AQual,
206 template<
typename>
typename BQual>
Definition tuple_impl.h:24
Definition tuple_forward_declaration.h:5
constexpr friend auto tag_invoke(types::Tag< util::get_in_place >, Constexpr< index >, Self &&self) -> meta::Like< Self, meta::TupleElement< Self, index > > &&
Definition tuple.h:149
constexpr Tuple(Tuple &&)=default
constexpr auto operator=(Tuple const &other) -> Tuple &requires(concepts::CopyAssignable< Types > &&...)
Definition tuple.h:55
constexpr auto operator=(Tuple &&other) -> Tuple &requires(concepts::MoveAssignable< Types > &&...)
Definition tuple.h:67
constexpr friend auto tag_invoke(types::Tag< tuple_size >, types::InPlaceType< Self >) -> types::size_t
Definition tuple.h:129
constexpr ~Tuple()=default
constexpr Tuple(Types const &... args)
Definition tuple.h:39
constexpr Tuple(Tup &&value)
Definition tuple.h:51
constexpr friend auto tag_invoke(types::Tag< tuple_element >, types::InPlaceType< Self const >, Constexpr< index >) -> InPlaceType< meta::At< TypeList, index > const >
Definition tuple.h:142
constexpr friend auto operator<=>(Tuple const &a, Tuple< Other... > const &b) -> meta::CommonComparisonCategory< meta::CompareThreeWayResult< Types, Other >... >
Definition tuple.h:109
constexpr auto operator=(Tuple &&other) const -> Tuple const &requires(concepts::AssignableFrom< Types const &, Types > &&...)
Definition tuple.h:72
constexpr Tuple()=default
constexpr friend auto tag_invoke(types::Tag< tuple_element >, types::InPlaceType< Self >, Constexpr< index >) -> InPlaceType< meta::At< TypeList, index > >
Definition tuple.h:136
constexpr Tuple(Tuple const &)=default
constexpr auto operator=(Tuple const &other) const -> Tuple const &requires(concepts::CopyAssignable< Types const > &&...)
Definition tuple.h:60
constexpr friend auto tag_invoke(types::Tag< util::get_in_place >, InPlaceType< T >, Self &&self) -> meta::Like< Self, T > &&
Definition tuple.h:158
Definition operations.h:19
Definition operations.h:11
Definition operations.h:37
Definition operations.h:34
Definition operations.h:24
Definition operations.h:114
Definition operations.h:46
constexpr auto unpack
Definition unpack.h:24
constexpr auto ycombinator
Definition ycombinator.h:63
Definition json_deserializer.h:532
std::size_t size_t
Definition size_t.h:12
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
constexpr auto get(T &&value) -> decltype(auto)
Definition get.h:8
constexpr auto forward_as_base(meta::RemoveReference< Derived > &derived) -> meta::Like< meta::RemoveReference< Derived > &, Base > &&
Definition forward_as_base.h:12
constexpr auto construct_tuple_impl_from_tuplelike
Definition tuple_impl.h:21
Tuple(Types...) -> Tuple< Types... >
constexpr auto construct_tuple_impl_valuewise
Definition tuple_impl.h:17
Definition zstring_parser.h:9
constexpr auto c_
A value of type Constexpr<val>.
Definition constexpr.h:252
Constexpr< has_common_reference_helper< Types... > > Invoke
Definition tuple.h:192
Constexpr< has_common_type_helper< Types... > > Invoke
Definition tuple.h:181
Definition in_place_type.h:5
Definition tuple_impl.h:28
constexpr bool has_common_reference_helper
Definition tuple.h:185
constexpr bool has_common_type_helper
Definition tuple.h:174