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

◆ contains()

template<concepts::product_type T, concepts::identifier ID>
bool kumi::contains ( T && t,
ID const & id )
inlineconstexprnoexcept

Checks if a product type contains a given identifier.

Parameters
tthe product type to inspect.
idIdentifier to check
Returns
true if the t contains a field labeled with the id identifier, false otherwise.

Examples:

Tuple:

#include <kumi/kumi.hpp>
#include <iostream>
using namespace kumi::literals;
template<kumi::concepts::product_type T>
void check_contains(T const& t)
{
if constexpr(contains(T{}, "value"_id))
std::cout << "Correct product_type: " << get<"value"_id>(t) << '\n';
else
std::cout << "Incorrect product type\n";
}
int main()
{
check_contains( kumi::tuple{"value"_id = 9 });
check_contains( kumi::tuple{"malus"_id = 3.5});
check_contains( kumi::tuple{"malus"_id = 6.5, "value"_id = 17} );
}
constexpr bool contains(T &&t, ID const &id) noexcept
Checks if a product type contains a given identifier.
Definition contains.hpp:35
decltype(auto) constexpr get(record< Ts... > &r) noexcept
Extracts the Ith field from a kumi::record.
Definition record.hpp:604
Fixed-size collection of heterogeneous values.
Definition tuple.hpp:33

Record:

#include <kumi/kumi.hpp>
#include <iostream>
using namespace kumi::literals;
template<kumi::concepts::product_type T>
void check_contains(T const& t)
{
if constexpr(contains(T{}, "value"_id))
std::cout << "Correct product_type: " << get<"value"_id>(t) << '\n';
else
std::cout << "Incorrect product type\n";
}
int main()
{
check_contains( kumi::record{"value"_id = 9 });
check_contains( kumi::record{"malus"_id = 3.5});
check_contains( kumi::record{"malus"_id = 6.5, "value"_id = 17} );
}
Fixed-size collection of heterogeneous tagged fields, tags are unique.
Definition record.hpp:36