A std::tuple implementation that incorporates most changes from C++23's standard library. More...
#include <seqan3/utility/tuple/common_tuple.hpp>
Public Member Functions | |
Default constructors and assignments. | |
common_tuple ()=default | |
Defaulted. | |
common_tuple (common_tuple const &)=default | |
Defaulted. | |
common_tuple & | operator= (common_tuple const &)=default |
Defaulted. | |
~common_tuple ()=default | |
Construct from arguments. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes &> && ...) | |
constexpr | common_tuple (UTypes &... other) |
Constructs from arguments. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...) | |
constexpr | common_tuple (UTypes const &... other) |
Constructs from arguments. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes> && ...) | |
constexpr | common_tuple (UTypes &&... other) |
Constructs from arguments. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...) | |
constexpr | common_tuple (UTypes const &&... other) |
Constructs from arguments. | |
Construct from common_tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes &> && ...) | |
constexpr | common_tuple (common_tuple< UTypes... > &other) |
Constructs from common_tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...) | |
constexpr | common_tuple (common_tuple< UTypes... > const &other) |
Constructs from common_tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes> && ...) | |
constexpr | common_tuple (common_tuple< UTypes... > &&other) |
Constructs from common_tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...) | |
constexpr | common_tuple (common_tuple< UTypes... > const &&other) |
Constructs from common_tuple. | |
Construct from common_pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes &> && ...) | |
constexpr | common_tuple (common_pair< UTypes... > &other) |
Constructs from common_pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...) | |
constexpr | common_tuple (common_pair< UTypes... > const &other) |
Constructs from common_pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes> && ...) | |
constexpr | common_tuple (common_pair< UTypes... > &&other) |
Constructs from common_pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...) | |
constexpr | common_tuple (common_pair< UTypes... > const &&other) |
Constructs from common_pair. | |
Construct from std::tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes &> && ...) | |
constexpr | common_tuple (std::tuple< UTypes... > &other) |
Constructs from std::tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...) | |
constexpr | common_tuple (std::tuple< UTypes... > const &other) |
Constructs from std::tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes> && ...) | |
constexpr | common_tuple (std::tuple< UTypes... > &&other) |
Constructs from std::tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...) | |
constexpr | common_tuple (std::tuple< UTypes... > const &&other) |
Constructs from std::tuple. | |
Construct from std::pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes &> && ...) | |
constexpr | common_tuple (std::pair< UTypes... > &other) |
Constructs from std::pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...) | |
constexpr | common_tuple (std::pair< UTypes... > const &other) |
Constructs from std::pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes> && ...) | |
constexpr | common_tuple (std::pair< UTypes... > &&other) |
Constructs from std::pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...) | |
constexpr | common_tuple (std::pair< UTypes... > const &&other) |
Constructs from std::pair. | |
Assign from common_tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes &> && ...) | |
constexpr common_tuple & | operator= (common_tuple< UTypes... > &other) |
Assigns from common_tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes const> && ...) | |
constexpr common_tuple & | operator= (common_tuple< UTypes... > const &other) |
Assigns from common_tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes> && ...) | |
constexpr common_tuple & | operator= (common_tuple< UTypes... > &&other) |
Assigns from common_tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes const> && ...) | |
constexpr common_tuple & | operator= (common_tuple< UTypes... > const &&other) |
Assigns from common_tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes &> && ...) | |
constexpr common_tuple const & | operator= (common_tuple< UTypes... > &other) const |
Assigns from common_tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes const> && ...) | |
constexpr common_tuple const & | operator= (common_tuple< UTypes... > const &other) const |
Assigns from common_tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes> && ...) | |
constexpr common_tuple const & | operator= (common_tuple< UTypes... > &&other) const |
Assigns from common_tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes const> && ...) | |
constexpr common_tuple const & | operator= (common_tuple< UTypes... > const &&other) const |
Assigns from common_tuple. | |
Assign from common_pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes &> && ...) | |
constexpr common_tuple & | operator= (common_pair< UTypes... > &other) |
Assigns from common_pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes const> && ...) | |
constexpr common_tuple & | operator= (common_pair< UTypes... > const &other) |
Assigns from common_pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes> && ...) | |
constexpr common_tuple & | operator= (common_pair< UTypes... > &&other) |
Assigns from common_pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes const> && ...) | |
constexpr common_tuple & | operator= (common_pair< UTypes... > const &&other) |
Assigns from common_pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes &> && ...) | |
constexpr common_tuple const & | operator= (common_pair< UTypes... > &other) const |
Assigns from common_pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes const> && ...) | |
constexpr common_tuple const & | operator= (common_pair< UTypes... > const &other) const |
Assigns from common_pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes> && ...) | |
constexpr common_tuple const & | operator= (common_pair< UTypes... > &&other) const |
Assigns from common_pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes const> && ...) | |
constexpr common_tuple const & | operator= (common_pair< UTypes... > const &&other) const |
Assigns from common_pair. | |
Assign from std::tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes &> && ...) | |
constexpr common_tuple & | operator= (std::tuple< UTypes... > &other) |
Assigns from std::tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes const> && ...) | |
constexpr common_tuple & | operator= (std::tuple< UTypes... > const &other) |
Assigns from std::tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes> && ...) | |
constexpr common_tuple & | operator= (std::tuple< UTypes... > &&other) |
Assigns from std::tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes const> && ...) | |
constexpr common_tuple & | operator= (std::tuple< UTypes... > const &&other) |
Assigns from std::tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes &> && ...) | |
constexpr common_tuple const & | operator= (std::tuple< UTypes... > &other) const |
Assigns from std::tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes const> && ...) | |
constexpr common_tuple const & | operator= (std::tuple< UTypes... > const &other) const |
Assigns from std::tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes> && ...) | |
constexpr common_tuple const & | operator= (std::tuple< UTypes... > &&other) const |
Assigns from std::tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes const> && ...) | |
constexpr common_tuple const & | operator= (std::tuple< UTypes... > const &&other) const |
Assigns from std::tuple. | |
Assign from std::pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes &> && ...) | |
constexpr common_tuple & | operator= (std::pair< UTypes... > &other) |
Assigns from std::pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes const> && ...) | |
constexpr common_tuple & | operator= (std::pair< UTypes... > const &other) |
Assigns from std::pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes> && ...) | |
constexpr common_tuple & | operator= (std::pair< UTypes... > &&other) |
Assigns from std::pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes const> && ...) | |
constexpr common_tuple & | operator= (std::pair< UTypes... > const &&other) |
Assigns from std::pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes &> && ...) | |
constexpr common_tuple const & | operator= (std::pair< UTypes... > &other) const |
Assigns from std::pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes const> && ...) | |
constexpr common_tuple const & | operator= (std::pair< UTypes... > const &other) const |
Assigns from std::pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes> && ...) | |
constexpr common_tuple const & | operator= (std::pair< UTypes... > &&other) const |
Assigns from std::pair. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes const> && ...) | |
constexpr common_tuple const & | operator= (std::pair< UTypes... > const &&other) const |
Assigns from std::pair. | |
Conversion to std::tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<UTypes, Types &> && ...) | |
operator std::tuple< UTypes... > () & | |
Converts to std::tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<UTypes, Types const> && ...) | |
operator std::tuple< UTypes... > () const & | |
Converts to std::tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<UTypes, Types> && ...) | |
operator std::tuple< UTypes... > () && | |
Converts to std::tuple. | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && (std::is_constructible_v<UTypes, Types const> && ...) | |
operator std::tuple< UTypes... > () const && | |
Converts to std::tuple. | |
![]() | |
T | operator= (T... args) |
T | swap (T... args) |
T | tuple (T... args) |
Friends | |
Comparison operators (common_tuple) | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && requires { requires (std::equality_comparable_with<Types, UTypes> && ...); } | |
constexpr friend bool | operator== (common_tuple const &lhs, common_tuple< UTypes... > const &rhs) |
Checks whether lhs and rhs are equal. More... | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && requires { requires (std::equality_comparable_with<Types, UTypes> && ...); } | |
constexpr friend bool | operator!= (common_tuple const &lhs, common_tuple< UTypes... > const &rhs) |
Checks whether lhs and rhs are unequal. More... | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && requires { requires (std::totally_ordered_with<Types, UTypes> && ...); } | |
constexpr friend bool | operator< (common_tuple const &lhs, common_tuple< UTypes... > const &rhs) |
Checks whether lhs is less than rhs . More... | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && requires { requires (std::totally_ordered_with<Types, UTypes> && ...); } | |
constexpr friend bool | operator<= (common_tuple const &lhs, common_tuple< UTypes... > const &rhs) |
Checks whether lhs is less than or equal to rhs . More... | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && requires { requires (std::totally_ordered_with<Types, UTypes> && ...); } | |
constexpr friend bool | operator> (common_tuple const &lhs, common_tuple< UTypes... > const &rhs) |
Checks whether lhs is greater than rhs . More... | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && requires { requires (std::totally_ordered_with<Types, UTypes> && ...); } | |
constexpr friend bool | operator>= (common_tuple const &lhs, common_tuple< UTypes... > const &rhs) |
Checks whether lhs is greater than or equal to rhs . More... | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && requires { requires (std::three_way_comparable_with<Types, UTypes> && ...); } | |
constexpr friend auto | operator<=> (common_tuple const &lhs, common_tuple< UTypes... > const &rhs) |
Performs a three-way comparison between lhs and rhs More... | |
Comparison operators (std::tuple) | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && requires { requires (std::equality_comparable_with<Types, UTypes> && ...); } | |
constexpr friend bool | operator== (common_tuple const &lhs, std::tuple< UTypes... > const &rhs) |
Checks whether lhs and rhs are equal. More... | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && requires { requires (std::equality_comparable_with<Types, UTypes> && ...); } | |
constexpr friend bool | operator!= (common_tuple const &lhs, std::tuple< UTypes... > const &rhs) |
Checks whether lhs and rhs are unequal. More... | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && requires { requires (std::totally_ordered_with<Types, UTypes> && ...); } | |
constexpr friend bool | operator< (common_tuple const &lhs, std::tuple< UTypes... > const &rhs) |
Checks whether lhs is less than rhs . More... | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && requires { requires (std::totally_ordered_with<Types, UTypes> && ...); } | |
constexpr friend bool | operator<= (common_tuple const &lhs, std::tuple< UTypes... > const &rhs) |
Checks whether lhs is less than or equal to rhs . More... | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && requires { requires (std::totally_ordered_with<Types, UTypes> && ...); } | |
constexpr friend bool | operator> (common_tuple const &lhs, std::tuple< UTypes... > const &rhs) |
Checks whether lhs is greater than rhs . More... | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && requires { requires (std::totally_ordered_with<Types, UTypes> && ...); } | |
constexpr friend bool | operator>= (common_tuple const &lhs, std::tuple< UTypes... > const &rhs) |
Checks whether lhs is greater than or equal to rhs . More... | |
template<class... UTypes> requires (sizeof...(Types) == sizeof...(UTypes)) && requires { requires (std::three_way_comparable_with<Types, UTypes> && ...); } | |
constexpr friend auto | operator<=> (common_tuple const &lhs, std::tuple< UTypes... > const &rhs) |
Performs a three-way comparison between lhs and rhs More... | |
A std::tuple implementation that incorporates most changes from C++23's standard library.
|
no-apidefault |
Defaulted.
|
no-apifriend |
Checks whether lhs
and rhs
are unequal.
UTypes | The types of the elements of rhs . Automatically deduced. |
lhs | A common_tuple. |
rhs | A common_tuple with possibly different element types. |
|
no-apifriend |
Checks whether lhs
and rhs
are unequal.
UTypes | The types of the elements of rhs . Automatically deduced. |
lhs | A common_tuple. |
rhs | A std::tuple with possibly different element types. |
|
no-apifriend |
Checks whether lhs
is less than rhs
.
UTypes | The types of the elements of rhs . Automatically deduced. |
lhs | A common_tuple. |
rhs | A common_tuple with possibly different element types. |
|
no-apifriend |
Checks whether lhs
is less than rhs
.
UTypes | The types of the elements of rhs . Automatically deduced. |
lhs | A common_tuple. |
rhs | A std::tuple with possibly different element types. |
|
no-apifriend |
Checks whether lhs
is less than or equal to rhs
.
UTypes | The types of the elements of rhs . Automatically deduced. |
lhs | A common_tuple. |
rhs | A common_tuple with possibly different element types. |
|
no-apifriend |
Checks whether lhs
is less than or equal to rhs
.
UTypes | The types of the elements of rhs . Automatically deduced. |
lhs | A common_tuple. |
rhs | A std::tuple with possibly different element types. |
|
no-apifriend |
Performs a three-way comparison between lhs
and rhs
UTypes | The types of the elements of rhs . Automatically deduced. |
lhs | A common_tuple. |
rhs | A common_tuple with possibly different element types. |
|
no-apifriend |
Performs a three-way comparison between lhs
and rhs
UTypes | The types of the elements of rhs . Automatically deduced. |
lhs | A common_tuple. |
rhs | A std::tuple with possibly different element types. |
|
no-apifriend |
Checks whether lhs
and rhs
are equal.
UTypes | The types of the elements of rhs . Automatically deduced. |
lhs | A common_tuple. |
rhs | A common_tuple with possibly different element types. |
|
no-apifriend |
Checks whether lhs
and rhs
are equal.
UTypes | The types of the elements of rhs . Automatically deduced. |
lhs | A common_tuple. |
rhs | A std::tuple with possibly different element types. |
|
no-apifriend |
Checks whether lhs
is greater than rhs
.
UTypes | The types of the elements of rhs . Automatically deduced. |
lhs | A common_tuple. |
rhs | A common_tuple with possibly different element types. |
|
no-apifriend |
Checks whether lhs
is greater than rhs
.
UTypes | The types of the elements of rhs . Automatically deduced. |
lhs | A common_tuple. |
rhs | A std::tuple with possibly different element types. |
|
no-apifriend |
Checks whether lhs
is greater than or equal to rhs
.
UTypes | The types of the elements of rhs . Automatically deduced. |
lhs | A common_tuple. |
rhs | A common_tuple with possibly different element types. |
|
no-apifriend |
Checks whether lhs
is greater than or equal to rhs
.
UTypes | The types of the elements of rhs . Automatically deduced. |
lhs | A common_tuple. |
rhs | A std::tuple with possibly different element types. |