|
constexpr | Tuple ()=default |
|
constexpr | Tuple (Tuple const &)=default |
|
constexpr | Tuple (Tuple &&)=default |
|
constexpr | Tuple (Types const &... args) |
|
template<typename... Args>
requires (sizeof...(Types) == sizeof...(Args) && sizeof...(Types) > 0 && (concepts::ConstructibleFrom<Types, Args> && ...)) |
constexpr | Tuple (Args &&... args) |
|
template<typename Tup>
requires (!concepts::DecaySameAs<Tuple, Tup> && concepts::ConstructibleFrom<Base, ConstructTupleImplFromTuplelike, Tup>) |
constexpr | Tuple (Tup &&value) |
|
constexpr | ~Tuple ()=default |
|
constexpr auto | operator= (Tuple const &other) -> Tuple &requires(concepts::CopyAssignable< Types > &&...) |
|
constexpr auto | operator= (Tuple const &other) const -> Tuple const &requires(concepts::CopyAssignable< Types const > &&...) |
|
constexpr auto | operator= (Tuple &&other) -> Tuple &requires(concepts::MoveAssignable< Types > &&...) |
|
constexpr auto | operator= (Tuple &&other) const -> Tuple const &requires(concepts::AssignableFrom< Types const &, Types > &&...) |
|
template<concepts::TupleLike Tup>
requires (!concepts::DecaySameAs<Tup, Tuple> && requires(Base& self, Tup&& other) { Base::static_assign(self, util::forward<Tup>(other)); }) |
constexpr auto | operator= (Tup &&other) -> Tuple & |
|
template<concepts::TupleLike Tup>
requires (!concepts::DecaySameAs<Tup, Tuple> && requires(Base const& self, Tup&& other) { Base::static_assign(self, util::forward<Tup>(other)); }) |
constexpr auto | operator= (Tup &&other) const -> Tuple const & |
|
constexpr auto | get () &-> decltype(auto) |
|
constexpr auto | get () const &-> decltype(auto) |
|
constexpr auto | get () &&-> decltype(auto) |
|
constexpr auto | get () const &&-> decltype(auto) |
|
constexpr auto | get () &-> decltype(auto) |
|
constexpr auto | get () const &-> decltype(auto) |
|
constexpr auto | get () &&-> decltype(auto) |
|
constexpr auto | get () const &&-> decltype(auto) |
|
|
template<typename... Other>
requires (sizeof...(Types) == sizeof...(Other) && requires { requires(concepts::EqualityComparableWith<Types, Other> && ...); }) |
constexpr friend auto | operator== (Tuple const &a, Tuple< Other... > const &b) -> bool |
|
template<typename... Other>
requires (sizeof...(Types) == sizeof...(Other) && requires { requires(concepts::ThreeWayComparableWith<Types, Other> && ...); }) |
constexpr friend auto | operator<=> (Tuple const &a, Tuple< Other... > const &b) -> meta::CommonComparisonCategory< meta::CompareThreeWayResult< Types, Other >... > |
|
template<concepts::DerivedFrom< Tuple > Self = Tuple> |
constexpr friend auto | tag_invoke (types::Tag< tuple_size >, types::InPlaceType< Self >) -> types::size_t |
|
template<types::size_t index, concepts::DerivedFrom< Tuple > Self = Tuple> |
constexpr friend auto | tag_invoke (types::Tag< tuple_element >, types::InPlaceType< Self >, Constexpr< index >) -> InPlaceType< meta::At< TypeList, index > > |
|
template<types::size_t index, concepts::DerivedFrom< Tuple > Self = Tuple> |
constexpr friend auto | tag_invoke (types::Tag< tuple_element >, types::InPlaceType< Self const >, Constexpr< index >) -> InPlaceType< meta::At< TypeList, index > const > |
|
template<types::size_t index, typename Self>
requires (index < sizeof...(Types) && concepts::DerivedFrom<meta::Decay<Self>, Tuple>) |
constexpr friend auto | tag_invoke (types::Tag< util::get_in_place >, Constexpr< index >, Self &&self) -> meta::Like< Self, meta::TupleElement< Self, index > > && |
|
template<typename T, typename Self = Tuple>
requires (concepts::DerivedFrom<meta::RemoveCVRef<Self>, Tuple> && meta::UniqueType<T, meta::List<Types...>>) |
constexpr friend auto | tag_invoke (types::Tag< util::get_in_place >, InPlaceType< T >, Self &&self) -> meta::Like< Self, T > && |
|