Iros
 
Loading...
Searching...
No Matches
di::Tuple< Types > Class Template Reference

#include <di/vocab/tuple/tuple.h>

Inheritance diagram for di::Tuple< Types >:
[legend]

Public Member Functions

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 &
 
- Public Member Functions inherited from di::util::AddMemberGet< Tuple< Types... > >
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)
 

Friends

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 > &&
 

Constructor & Destructor Documentation

◆ Tuple() [1/6]

template<typename... Types>
di::vocab::Tuple< Types >::Tuple ( )
constexprdefault

◆ Tuple() [2/6]

template<typename... Types>
di::vocab::Tuple< Types >::Tuple ( Tuple< Types > const & )
constexprdefault

◆ Tuple() [3/6]

template<typename... Types>
di::vocab::Tuple< Types >::Tuple ( Tuple< Types > && )
constexprdefault

◆ Tuple() [4/6]

template<typename... Types>
di::vocab::Tuple< Types >::Tuple ( Types const &... args)
inlineconstexpr

◆ Tuple() [5/6]

template<typename... Types>
template<typename... Args>
requires (sizeof...(Types) == sizeof...(Args) && sizeof...(Types) > 0 && (concepts::ConstructibleFrom<Types, Args> && ...))
di::vocab::Tuple< Types >::Tuple ( Args &&... args)
inlineconstexpr

◆ Tuple() [6/6]

template<typename... Types>
template<typename Tup>
requires (!concepts::DecaySameAs<Tuple, Tup> && concepts::ConstructibleFrom<Base, ConstructTupleImplFromTuplelike, Tup>)
di::vocab::Tuple< Types >::Tuple ( Tup && value)
inlineconstexpr

◆ ~Tuple()

template<typename... Types>
di::vocab::Tuple< Types >::~Tuple ( )
constexprdefault

Member Function Documentation

◆ operator=() [1/6]

template<typename... Types>
template<concepts::TupleLike Tup>
requires (!concepts::DecaySameAs<Tup, Tuple> && requires(Base& self, Tup&& other) { Base::static_assign(self, util::forward<Tup>(other)); })
auto di::vocab::Tuple< Types >::operator= ( Tup && other) -> Tuple&
inlineconstexpr

◆ operator=() [2/6]

template<typename... Types>
template<concepts::TupleLike Tup>
requires (!concepts::DecaySameAs<Tup, Tuple> && requires(Base const& self, Tup&& other) { Base::static_assign(self, util::forward<Tup>(other)); })
auto di::vocab::Tuple< Types >::operator= ( Tup && other) const -> Tuple const&
inlineconstexpr

◆ operator=() [3/6]

template<typename... Types>
auto di::vocab::Tuple< Types >::operator= ( Tuple< Types > && other) -> Tuple& requires(concepts::MoveAssignable<Types>&&...)
inlineconstexpr

◆ operator=() [4/6]

template<typename... Types>
auto di::vocab::Tuple< Types >::operator= ( Tuple< Types > && other) const -> Tuple const& requires(concepts::AssignableFrom<Types const&, Types> && ...)
inlineconstexpr

◆ operator=() [5/6]

template<typename... Types>
auto di::vocab::Tuple< Types >::operator= ( Tuple< Types > const & other) -> Tuple& requires(concepts::CopyAssignable<Types>&&...)
inlineconstexpr

◆ operator=() [6/6]

template<typename... Types>
auto di::vocab::Tuple< Types >::operator= ( Tuple< Types > const & other) const -> Tuple const& requires(concepts::CopyAssignable<Types const> && ...)
inlineconstexpr

Friends And Related Symbol Documentation

◆ operator<=>

template<typename... Types>
template<typename... Other>
requires (sizeof...(Types) == sizeof...(Other) && requires { requires(concepts::ThreeWayComparableWith<Types, Other> && ...); })
friend auto operator<=> ( Tuple< Types > const & a,
Tuple< Other... > const & b ) -> meta::CommonComparisonCategory<meta::CompareThreeWayResult<Types, Other>...>
friend

◆ operator==

template<typename... Types>
template<typename... Other>
requires (sizeof...(Types) == sizeof...(Other) && requires { requires(concepts::EqualityComparableWith<Types, Other> && ...); })
friend auto operator== ( Tuple< Types > const & a,
Tuple< Other... > const & b ) -> bool
friend

◆ tag_invoke [1/5]

template<typename... Types>
template<types::size_t index, concepts::DerivedFrom< Tuple > Self = Tuple>
friend auto tag_invoke ( types::Tag< tuple_element > ,
types::InPlaceType< Self > ,
Constexpr< index >  ) -> InPlaceType<meta::At<TypeList, index>>
friend

◆ tag_invoke [2/5]

template<typename... Types>
template<types::size_t index, concepts::DerivedFrom< Tuple > Self = Tuple>
friend auto tag_invoke ( types::Tag< tuple_element > ,
types::InPlaceType< Self const > ,
Constexpr< index >  ) -> InPlaceType<meta::At<TypeList, index> const>
friend

◆ tag_invoke [3/5]

template<typename... Types>
template<concepts::DerivedFrom< Tuple > Self = Tuple>
friend auto tag_invoke ( types::Tag< tuple_size > ,
types::InPlaceType< Self >  ) -> types::size_t
friend

◆ tag_invoke [4/5]

template<typename... Types>
template<types::size_t index, typename Self>
requires (index < sizeof...(Types) && concepts::DerivedFrom<meta::Decay<Self>, Tuple>)
friend auto tag_invoke ( types::Tag< util::get_in_place > ,
Constexpr< index > ,
Self && self ) -> meta::Like<Self, meta::TupleElement<Self, index>>&&
friend

◆ tag_invoke [5/5]

template<typename... Types>
template<typename T, typename Self = Tuple>
requires (concepts::DerivedFrom<meta::RemoveCVRef<Self>, Tuple> && meta::UniqueType<T, meta::List<Types...>>)
friend auto tag_invoke ( types::Tag< util::get_in_place > ,
InPlaceType< T > ,
Self && self ) -> meta::Like<Self, T>&&
friend

The documentation for this class was generated from the following files: