|
|
constexpr | tuple ()=default |
| | Default construct the recursive tuple node when all elements allow it.
|
| constexpr | tuple (const tuple &o)=default |
| | Copy construct this tuple when every element is copy constructible.
|
template<typename U, typename... Us>
requires std::is_constructible_v<T, U &&> && std::is_constructible_v<tuple<Ts...>, Us &&...> |
| constexpr | tuple (const tuple< U, Us... > &o) |
| | Construct from a tuple with element types convertible to this tuple.
|
| constexpr | tuple (tuple &&o) noexcept=default |
| | Move construct this tuple when every element is movable.
|
template<typename U, typename... Us>
requires std::is_constructible_v<T, U &&> && std::is_constructible_v<tuple<Ts...>, Us &&...> |
| constexpr | tuple (tuple< U, Us... > &&o) |
| | Move construct from a tuple with compatible element types.
|
template<typename U, typename... Us>
requires std::is_constructible_v<T, U &&> && std::is_constructible_v<tuple<Ts...>, Us &&...> && (!(std::is_same_v<tuple, U> || (std::is_same_v<tuple, Us> || ...))) |
| constexpr | tuple (U &&_v, Us &&..._r) |
| | Construct the tuple elements from individual values.
|
| constexpr tuple & | operator= (const tuple &other)=default |
| | Copy assign this tuple when all elements are copy assignable.
|
template<typename U, typename... Us>
requires (std::is_assignable_v<T &, const U &> && (std::is_assignable_v<Ts &, const Us &> && ...)) |
| constexpr tuple & | operator= (const tuple< U, Us... > &other) |
| | Copy assign from a tuple with compatible element types.
|
| constexpr tuple & | operator= (tuple &&other) noexcept=default |
| | Move assign this tuple when all elements are movable.
|
template<typename U, typename... Us>
requires (std::is_assignable_v<T &, U> && (std::is_assignable_v<Ts &, Us> && ...)) |
| constexpr tuple & | operator= (tuple< U, Us... > &&other) |
| | Move assign from a tuple with compatible element types.
|
template<typename T, typename... Ts>
struct detray::tuple< T, Ts... >
Recursive tuple node holding one value and the remaining tuple tail.
template<typename T, typename... Ts>
template<typename U, typename... Us>
requires std::is_constructible_v<T, U &&> && std::is_constructible_v<tuple<Ts...>, Us &&...>
Construct from a tuple with element types convertible to this tuple.
- Template Parameters
-
| U | type of the first source element |
| Us | types of the remaining source elements |
- Parameters
-
template<typename T, typename... Ts>
template<typename U, typename... Us>
requires std::is_constructible_v<T, U &&> && std::is_constructible_v<tuple<Ts...>, Us &&...>
Move construct from a tuple with compatible element types.
- Template Parameters
-
| U | type of the first source element |
| Us | types of the remaining source elements |
- Parameters
-
template<typename T, typename... Ts>
template<typename U, typename... Us>
requires std::is_constructible_v<T, U &&> && std::is_constructible_v<tuple<Ts...>, Us &&...> && (!(std::is_same_v<tuple, U> || (std::is_same_v<tuple, Us> || ...)))
Construct the tuple elements from individual values.
- Template Parameters
-
| U | type of the first value |
| Us | types of the remaining values |
- Parameters
-
| _v | value stored in this tuple node |
| _r | values forwarded to the tuple tail |
template<typename T, typename... Ts>
template<typename U, typename... Us>
requires (std::is_assignable_v<T &, const U &> && (std::is_assignable_v<Ts &, const Us &> && ...))
Copy assign from a tuple with compatible element types.
- Template Parameters
-
| U | type of the first source element |
| Us | types of the remaining source elements |
- Parameters
-
- Returns
- reference to this tuple
template<typename T, typename... Ts>
template<typename U, typename... Us>
requires (std::is_assignable_v<T &, U> && (std::is_assignable_v<Ts &, Us> && ...))
Move assign from a tuple with compatible element types.
- Template Parameters
-
| U | type of the first source element |
| Us | types of the remaining source elements |
- Parameters
-
- Returns
- reference to this tuple