kumi v3.1.0
Exquisite Epidote
Loading...
Searching...
No Matches
Tuple Types and Functions

Definition for kumi::tuple class and functions. More...

Classes

struct  kumi::as_tuple< T, Meta >
 Generate a kumi::tuple type from a type. More...
class  kumi::tuple< Ts >
 Fixed-size collection of heterogeneous values. More...

Friends

template<typename CharT, typename Traits>
std::basic_ostream< CharT, Traits > & operator<< (std::basic_ostream< CharT, Traits > &os, tuple const &t) noexcept
 Inserts a kumi::tuple in an output stream.

Comparison operators

template<typename... Us>
requires (concepts::equality_comparable<tuple, tuple<Us...>>)
constexpr auto operator== (tuple const &self, tuple< Us... > const &other) noexcept
 Compares a tuple with an other for equality.
template<typename... Us>
requires (sizeof...(Ts) == sizeof...(Us) && _::piecewise_ordered<tuple, tuple<Us...>>)
constexpr auto operator< (tuple const &lhs, tuple< Us... > const &rhs) noexcept
 Compares tuples for lexicographical is less relation.
template<typename... Us>
requires requires { rhs < lhs; }
constexpr auto operator<= (tuple const &lhs, tuple< Us... > const &rhs) noexcept
 Compares tuples for lexicographical is less or equal relation.
template<typename... Us>
requires requires { rhs < lhs; }
constexpr auto operator> (tuple const &lhs, tuple< Us... > const &rhs) noexcept
 Compares tuples for lexicographical is greater relation.
template<typename... Us>
requires requires { lhs < rhs; }
constexpr auto operator>= (tuple const &lhs, tuple< Us... > const &rhs) noexcept
 Compares tuples for lexicographical is greater relation relation.

Tuple Deduction Guides

template<typename... Ts>
KUMI_CUDA kumi::tuple (Ts &&...) -> tuple< std::unwrap_ref_decay_t< Ts >... >
 kumi::tuple deduction guide

Tuple construction

template<typename... Ts>
constexpr auto kumi::tie (Ts &... ts) -> tuple< Ts &... >
 Creates a kumi::tuple of lvalue references to its arguments.
template<typename... Ts>
constexpr auto kumi::make_tuple (Ts &&... ts) -> tuple< std::unwrap_ref_decay_t< Ts >... >
 Creates a tuple object, deducing the target type from the types of arguments.
template<typename... Ts>
constexpr auto forward_as_tuple (Ts &&... ts) -> tuple< Ts &&... >
 Creates a kumi::tuple of forwarding references to its arguments.
template<concepts::product_type T>
constexpr auto to_ref (T &&t)
 Creates a kumi::tuple of references given a reference to a kumi::product_type.

Tuple conversions

template<typename Type, typename... Ts>
constexpr auto from_tuple (tuple< Ts... > const &t)
 Converts a kumi::tuple to an instance of an arbitrary type.
template<concepts::product_type T>
constexpr auto to_tuple (T &&t)
 Converts a kumi::product_type to an instance kumi::tuple.

Accessors

template<std::size_t I, typename... Ts>
decltype(auto) constexpr get (tuple< Ts... > &t) noexcept
 Extracts the Ith element from a kumi::tuple.