#include <kumi/kumi.hpp>
#include <iostream>
#include <string>
using namespace kumi::literals;
struct my_struct
{
int i;
float f;
};
template<std::size_t I>
decltype(
auto)
get(my_struct
const & m)
noexcept
{
}
template<std::size_t I>
decltype(
auto)
get(my_struct & m)
noexcept
{
}
template<>
{};
template<>
struct std::tuple_size<my_struct> : std::integral_constant<std::size_t,3>
{};
template<> struct std::tuple_element<0,my_struct> { using type = kumi::field<kumi::name<"i"> , int >; };
template<> struct std::tuple_element<1,my_struct> { using type = kumi::field<kumi::name<"f"> , float >; };
template<> struct std::tuple_element<2,my_struct> { using type = kumi::field<kumi::name<"name">, std::string>; };
int main()
{
using namespace kumi::literals;
std::cout << a << "\n";
std::cout << b.i << ' ' << b.f << ' ' << b.name << "\n";
}
decltype(auto) constexpr capture_field(T &&t) noexcept
Creates a field from a given value keeping the qualifiers.
Definition field.hpp:150
constexpr auto from_record(record< Ts... > const &r)
Converts a kumi::record to an instance of a type that models kumi::record_type.
Definition record.hpp:445
constexpr auto make_record(Ts &&... ts) -> record< std::unwrap_ref_decay_t< Ts >... >
Creates a record object, deducing the target type from the types of arguments.
Definition record.hpp:396
constexpr decltype(auto) get(record< Ts... > &&r) noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition record.hpp:506
Opt-in traits for types behaving like a kumi::product_type.
Definition traits.hpp:92
Compile-time text based ID.
Definition identifier.hpp:147