Loading [MathJax]/extensions/tex2jax.js
kumi v3.1.0
Exquisite Epidote
 
All Classes Namespaces Functions Variables Friends Modules Pages Concepts
Loading...
Searching...
No Matches

◆ extract()

template<std::size_t I0, std::size_t I1, product_type Tuple>
requires ( (I0 <= size_v<Tuple>) && (I1 <= size_v<Tuple>) )
constexpr auto kumi::extract ( Tuple const t,
index_t< I0 i0,
index_t< I1 i1 
)
constexprnoexcept

Extracts a sub-tuple from a product type.

Note
Does not participate in overload resolution if I0 and I1 do not verify that 0 <= I0 <= I1 <= size_v<T>.
Parameters
tTuple to extract from
i0Compile-time index of the first element to extract.
i1Compile-time index past the last element to extract. By default, i1 is equal to size_v<T>.
Returns
A new kumi::tuple containing to the selected elements of the input tuple.

Helper type

namespace kumi::result
{
template<product_type Tuple, std::size_t I0, std::size_t I1=-1> struct extract;
template<product_type Tuple, std::size_t I0, std::size_t I1=-1>
using extract_t = typename extract<Tuple,I0,I1>::type;
}
Concept specifying a type follows the Product Type semantic.
Definition concepts.hpp:33
constexpr auto extract(Tuple const &t, index_t< I0 > i0, index_t< I1 > i1) noexcept
Extracts a sub-tuple from a product type.
Definition extract.hpp:43
constexpr auto from_tuple(tuple< Ts... > const &t)
Converts a kumi::tuple to an instance of an arbitrary type.
Definition convert.hpp:59

Computes the type returned by a call to extract.

Example:

#include <kumi/tuple.hpp>
#include <iostream>
int main()
{
using namespace kumi::literals;
kumi::tuple a = { 1, 2.3, 4.5f,'6',"7", short{89} };
auto head = extract(a,0_c,1_c);
auto mid = extract(a,1_c,3_c);
std::cout << a << " => " << head << ' ' << mid << ' ' << last << '\n';
}
Fixed-size collection of heterogeneous values.
Definition tuple.hpp:35