di 0.1.0
Loading...
Searching...
No Matches
holds_alternative.h
Go to the documentation of this file.
1#pragma once
2
3#include "di/meta/algorithm.h"
6
7namespace di::vocab {
8namespace detail {
9 template<typename T>
10 struct HoldsAlternativeFunction {
11 template<concepts::VariantLike Var, typename List = meta::VariantTypes<Var>>
12 requires(meta::UniqueType<T, List>)
13 constexpr auto operator()(Var const& variant) const -> bool {
14 constexpr auto expected_index = meta::Lookup<T, List>;
15 return variant_index(variant) == expected_index;
16 }
17 };
18}
19
20template<typename T>
21constexpr inline auto holds_alternative = detail::HoldsAlternativeFunction<T> {};
22}
23
24namespace di {
26}
Definition lazy.h:165
constexpr auto variant_index
Definition variant_index.h:27
constexpr auto holds_alternative
Definition holds_alternative.h:21
Definition any_storable.h:9