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
-
- Returns
- A flat product type composed of pointers to each elements of t.
Helper type
namespace kumi::result
{
template<product_type T>
}
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()
{
std::cout << a << "\n";
std::cout << ptr << "\n";
std::cout << a << "\n";
}
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{
"c"_id = 2.3,
"d"_id = 4.5f },
"e"_id =
short{89} };
std::cout << a << "\n";
std::cout << ptr << "\n";
std::cout << a << "\n";
}
Fixed-size collection of heterogeneous tagged fields, tags are unique.
Definition record.hpp:36