Iros
Loading...
Searching...
No Matches
holds_alternative.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/meta/algorithm.h
"
4
#include "
di/vocab/variant/variant_like.h
"
5
#include "
di/vocab/variant/variant_types.h
"
6
7
namespace
di::vocab
{
8
namespace
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
20
template
<
typename
T>
21
constexpr
inline
auto
holds_alternative
=
detail::HoldsAlternativeFunction<T>
{};
22
}
23
24
namespace
di
{
25
using
vocab::holds_alternative
;
26
}
algorithm.h
di::meta::UniqueType
Definition
list.h:116
di::vocab::detail
Definition
erasure_cast.h:7
di::vocab
Definition
lazy.h:165
di::vocab::variant_index
constexpr auto variant_index
Definition
variant_index.h:27
di::vocab::holds_alternative
constexpr auto holds_alternative
Definition
holds_alternative.h:21
di
Definition
zstring_parser.h:9
di::vocab::detail::HoldsAlternativeFunction
Definition
holds_alternative.h:10
variant_like.h
variant_types.h
libs
di
include
di
vocab
variant
holds_alternative.h
Generated by
1.13.0