di 0.1.0
Loading...
Searching...
No Matches
tuple.h
Go to the documentation of this file.
1#pragma once
2
10#include "di/meta/util.h"
12
13namespace di::fmt {
14template<concepts::Formattable... Types, concepts::Encoding Enc>
16 auto do_output = [](concepts::FormatContext auto& context,
17 concepts::DecaySameAs<Tuple<Types...>> auto&& tuple) -> Result<void> {
18 context.output('(');
19 context.output(' ');
20 bool first = true;
22 [&](auto&& value) {
23 if (!first) {
24 context.output(',');
25 context.output(' ');
26 }
27 first = false;
28 (void) vformat_encoded_context<meta::Encoding<decltype(context)>>(
29 u8"{}"_sv, fmt::make_format_args<decltype(context)>(value), context, true);
30 },
31 util::forward<decltype(tuple)>(tuple));
32
33 context.output(' ');
34 context.output(')');
35 return {};
36 };
37 return Result<decltype(do_output)>(util::move(do_output));
38}
39}
Definition format_parse_context.h:14
Definition tuple.h:27
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 vformat_encoded_context
Definition vformat_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 void tuple_for_each(F &&function, Tup &&tuple)
Definition tuple_for_each.h:22
Definition in_place_type.h:5