di 0.1.0
Loading...
Searching...
No Matches
variant_types.h
Go to the documentation of this file.
1#pragma once
2
4#include "di/meta/algorithm.h"
5#include "di/meta/core.h"
6#include "di/types/prelude.h"
7
8namespace di::vocab {
9namespace detail {
10 struct VariantTypesFunction {
11 template<typename Variant>
12 requires(concepts::TagInvocable<VariantTypesFunction, InPlaceType<Variant>>)
13 constexpr auto operator()(InPlaceType<Variant>) const -> concepts::TypeList auto {
15 }
16 };
17}
18
19constexpr inline auto variant_types = detail::VariantTypesFunction {};
20}
21
22namespace di::meta {
23template<typename T>
25}
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
Definition merge_interfaces.h:6
RemoveCV< RemoveReference< T > > RemoveCVRef
Definition core.h:74
decltype(vocab::variant_types(in_place_type< meta::RemoveCVRef< T > >)) VariantTypes
Definition variant_types.h:24
Definition lazy.h:165
constexpr auto variant_types
Definition variant_types.h:19
constexpr auto in_place_type
Definition in_place_type.h:12