Iros
 
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::format {
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;
21 auto results = tuple_transform(
22 [&](auto&& value) -> Result<void> {
23 if (!first) {
24 context.output(',');
25 context.output(' ');
26 }
27 first = false;
28 return vpresent_encoded_context<meta::Encoding<decltype(context)>>(
29 u8"{}"_sv, format::make_format_args<decltype(context)>(value), context, true);
30 },
31 util::forward<decltype(tuple)>(tuple));
32 (void) results;
33
34 context.output(' ');
35 context.output(')');
36 return {};
37 };
38 return Result<decltype(do_output)>(util::move(do_output));
39}
40}
Definition format_parse_context.h:14
Definition tuple_forward_declaration.h:5
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 tuple_transform(F &&function, Tup &&tuple)
Definition tuple_transform.h:22
Definition in_place_type.h:5