Iros
 
Loading...
Searching...
No Matches
variant.h
Go to the documentation of this file.
1#pragma once
2
10#include "di/meta/util.h"
12
13namespace di::format {
14template<concepts::Formattable... Types, concepts::Encoding Enc>
16 auto do_output = [](concepts::FormatContext auto& context,
17 concepts::DecaySameAs<Variant<Types...>> auto&& variant) -> Result<void> {
18 return di::visit(
19 [&](auto&& value) -> Result<void> {
20 return vpresent_encoded_context<meta::Encoding<decltype(context)>>(
21 u8"{}"_sv, format::make_format_args<decltype(context)>(value), context, true);
22 },
23 variant);
24 };
25 return Result<decltype(do_output)>(util::move(do_output));
26}
27}
Definition format_parse_context.h:14
Definition variant_forward_declaration.h:6
Definition util.h:59
Definition format_context.h:9
Definition bounded_format_context.h:7
constexpr auto make_format_args(Types &&... values)
Definition make_format_args.h:9
constexpr auto vpresent_encoded_context
Definition vpresent_encoded_context.h:61
meta::RemoveCVRef< T >::Encoding Encoding
Definition encoding.h:230
__UINT8_TYPE__ u8
Definition integers.h:9
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
Expected< T, Error > Result
Definition result.h:8
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
constexpr auto visit(Vis &&visitor, Vars &&... variants) -> R
Definition visit.h:39
Definition in_place_type.h:5