di 0.1.0
Loading...
Searching...
No Matches
variant_alternative.h
Go to the documentation of this file.
1#pragma once
2
4#include "di/meta/constexpr.h"
5#include "di/meta/core.h"
6#include "di/types/prelude.h"
7
8namespace di::vocab {
9namespace detail {
10 struct VariantAlternativeFunction {
11 template<typename Variant, size_t index>
12 requires(concepts::TagInvocable<VariantAlternativeFunction, InPlaceType<Variant>, Constexpr<index>>)
13 constexpr auto operator()(InPlaceType<Variant>, Constexpr<index>) const
14 -> meta::TagInvokeResult<VariantAlternativeFunction, InPlaceType<Variant>, Constexpr<index>> {
16 }
17 };
18}
19
20constexpr inline auto variant_alternative = detail::VariantAlternativeFunction {};
21}
22
23namespace di::meta {
24template<typename T, size_t index>
26}
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
Definition merge_interfaces.h:6
constexpr auto c_
A value of type Constexpr<val>.
Definition constexpr.h:252
Type< detail::RemoveReferenceHelper< T > > RemoveReference
Definition core.h:71
decltype(di::function::tag_invoke(util::declval< Tag >(), util::declval< Args >()...)) TagInvokeResult
Definition tag_invoke.h:40
decltype(vocab::variant_alternative(in_place_type< meta::RemoveReference< T > >, c_< index >)) VariantAlternative
Definition variant_alternative.h:25
Definition lazy.h:165
constexpr auto variant_alternative
Definition variant_alternative.h:20
constexpr auto c_
A value of type Constexpr<val>.
Definition constexpr.h:252
constexpr auto in_place_type
Definition in_place_type.h:12