Iros
Loading...
Searching...
No Matches
variant_or_empty.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/meta/algorithm.h
"
4
#include "
di/meta/core.h
"
5
#include "
di/vocab/variant/variant_forward_declaration.h
"
6
7
namespace
di::meta
{
8
namespace
detail
{
9
struct
EmptyVariant
{
10
EmptyVariant
() =
delete
;
11
};
12
13
template
<
typename
List>
14
struct
VariantOrEmptyHelper
;
15
16
template
<
typename
... Types>
17
struct
VariantOrEmptyHelper
<
List
<Types...>> :
TypeConstant
<vocab::Variant<Types...>> {};
18
19
template
<>
20
struct
VariantOrEmptyHelper
<
List
<>> :
TypeConstant
<EmptyVariant> {};
21
}
22
23
template
<
typename
... Types>
24
using
VariantOrEmpty
=
detail::VariantOrEmptyHelper
<
meta::Unique
<
meta::List
<Types...>>>
::Type
;
25
}
algorithm.h
core.h
di::meta::detail
Definition
const_sentinel.h:8
di::meta
Definition
merge_interfaces.h:6
di::meta::Type
T::Type Type
Definition
core.h:26
di::meta::Unique
Fold< Lst, List<>, detail::PushBackIfUnique > Unique
Definition
algorithm.h:203
di::meta::VariantOrEmpty
detail::VariantOrEmptyHelper< meta::Unique< meta::List< Types... > > >::Type VariantOrEmpty
Definition
variant_or_empty.h:24
di::meta::List
Definition
core.h:5
di::meta::TypeConstant
Definition
core.h:18
di::meta::detail::EmptyVariant::EmptyVariant
EmptyVariant()=delete
di::meta::detail::VariantOrEmptyHelper
Definition
variant_or_empty.h:14
variant_forward_declaration.h
libs
di
include
di
execution
meta
variant_or_empty.h
Generated by
1.13.0