#include <kumi/tuple.hpp>
#include <concepts>
#include <cstdint>
#include <type_traits>
#include <utility>
{
float x, y, z;
};
template<std::size_t I>
decltype(
auto)
get(
vec3 const&
v)
noexcept
{
if constexpr(
I==0)
return v.x;
if constexpr(
I==1)
return v.y;
if constexpr(
I==2)
return v.z;
}
template<std::size_t I>
{
if constexpr(
I==0)
return v.x;
if constexpr(
I==1)
return v.y;
if constexpr(
I==2)
return v.z;
}
template<>
{};
template<>
struct std::tuple_size<
vec3>
: std::integral_constant<std::size_t,3> {};
template<std::
size_t I>
struct std::tuple_element<
I,
vec3> {
using type = float; };
{
static_assert( std::same_as<three_floats , kumi::tuple<float ,float ,float > >);
static_assert( std::same_as<three_pointers, kumi::tuple<float*,float*,float*> >);
static_assert( std::same_as<single_type , kumi::tuple<float> >);
static_assert( std::same_as<single_pointer, kumi::tuple<float*> >);
}
constexpr auto from_tuple(tuple< Ts... > const &t)
Converts a kumi::tuple to an instance of an arbitrary type.
Definition convert.hpp:59
KUMI_TRIVIAL_NODISCARD constexpr decltype(auto) get(tuple< Ts... > &&arg) noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition tuple.hpp:414
Opt-in traits for types behaving like a kumi::product_type.
Definition traits.hpp:31