KUMI v3.1.0
Exquisite Epidote
Loading...
Searching...
No Matches

◆ as_flat_ptr()

template<concepts::product_type T>
auto kumi::as_flat_ptr ( T && t)
inlinenodiscardnoexcept

Convert a product type to a flat product type of pointers to each its components.

On record types, the names of the outer record are concatenated to the inner ones ultimately constructing names such as "outer.inner". If the input is a product type containing record types or vice versa only the inner types matching the outer semantic will be flattened. Thus a record inside a tuple will not be flattened.

Parameters
tProduct type to convert
Returns
A flat product type composed of pointers to each elements of t.

Helper type

namespace kumi::result
{
template<product_type T> struct as_flat_ptr;
template<product_type T>
using as_flat_ptr_t = typename as_flat_ptr<T>::type;
}
auto as_flat_ptr(T &&t) noexcept
Convert a product type to a flat product type of pointers to each its components.
Definition flatten.hpp:237

Computes the return type of a call to kumi::as_flat_ptr

Examples:

Tuple:

#include <kumi/kumi.hpp>
#include <iostream>
int main()
{
kumi::tuple a = { 1, kumi::tuple{ 2.3, 4.5f }, short{89} };
auto ptr = kumi::as_flat_ptr(a);
std::cout << a << "\n";
std::cout << ptr << "\n";
kumi::for_each([](auto p) { *p += 5; }, ptr );
std::cout << a << "\n";
}
constexpr void for_each(Function f, T &&t, Ts &&... ts)
Applies the Callable object f on each element of a product type. f is applied on the values if the gi...
Definition for_each.hpp:36
Fixed-size collection of heterogeneous values.
Definition tuple.hpp:33

Record:

#include <kumi/kumi.hpp>
#include <iostream>
int main()
{
using namespace kumi::literals;
kumi::record a = { "a"_id = 1, "b"_id =
kumi::record{ "c"_id = 2.3, "d"_id = 4.5f }, "e"_id = short{89} };
auto ptr = kumi::as_flat_ptr(a);
std::cout << a << "\n";
std::cout << ptr << "\n";
kumi::for_each([](auto p) { *p += 5; }, ptr );
std::cout << a << "\n";
}
Fixed-size collection of heterogeneous tagged fields, tags are unique.
Definition record.hpp:36