C++ Library Extensions 2022.12.09
To help learn modern C++ programming
fold_visitor.cpp
Go to the documentation of this file.
2
3namespace cpt = cpg::types;
4
5void pack_handle_1(auto... args)
6{
7 std::cout << "pack_handler_1 == " << std::endl;
8
10 {
11 [](auto arg)
12 {
13 std::cout << arg;
14 }
15 };
16
17 ( visitor << ... << args );
18
20 visitor.reset();
21
22 ( args >> ... >> visitor);
23
25}
26
27void pack_handle_2(auto... args)
28{
29 std::cout << "pack_handler_2 == " << std::endl;
30
31 auto arg_count = sizeof...(args);
32
33 auto operation = [](auto arg) { std::cout << arg; };
34
35 auto delimiter = []{ std::cout <<", "; };
36
37 cpt::fold_visitor visitor{ arg_count, operation, delimiter };
38
39 ( visitor << ... << args );
40
42 visitor.reset();
43
44 ( args >> ... >> visitor);
45
47}
48
49void pack_handle_3(auto... args)
50{
51 std::cout << "pack_handler_3 == " << std::endl;
52
53 auto arg_count = sizeof...(args);
54
55 auto operation = [](auto arg) { std::cout << arg; };
56 auto open_delimiter = []{ std::cout <<"{ "; };
57 auto delimiter = []{ std::cout <<", "; };
58 auto close_delimiter = []{ std::cout <<" }"; };
59 cpt::fold_visitor visitor{ arg_count, operation, open_delimiter, delimiter, close_delimiter };
60
61 ( visitor << ... << args );
62
64 visitor.reset();
65
66 ( args >> ... >> visitor);
67
69}
70
71void pack_handle_4(auto... args)
72{
73 std::cout << "pack_handler_4 == " << std::endl;
74
75 int sum = 0;
76
77 cpt::fold_visitor visitor
78 {
79 [&sum](auto arg)
80 {
81 sum += (int)arg;
82 }
83 };
84
85 ( visitor << ... << args );
86
87 std::cout << "sum = " << sum << cpg::endL;
88}
89
91{
92 pack_handle_1(1, 2, 3, 4, 5 );
93 pack_handle_2(1, 2, 3, 4, 5 );
94 pack_handle_3(1, 2, 3, 4, 5 );
95
96 pack_handle_4(1, 2, 3, 4, 5, 6, 7, 8, 9, 10 );
97}
98
99int main()
100{
102}
return_t sum(int a, int b)
auto & cout
auto & endl
void pack_handle_3(auto... args)
void pack_handle_4(auto... args)
void test_fold_visitor()
void pack_handle_2(auto... args)
void pack_handle_1(auto... args)
Definition: fold_visitor.cpp:5
int main()
constexpr auto endL
Definition: cpg_types.hpp:214