23 stream <<
"--- File Contents Summary ---\n\n---We define lambdas as elements of std::tuple\n";
24 stream <<
" then we evaluate the lambdas at one function call\n";
25 stream <<
" and get the evaluation result through the container of our choice." <<
endL;
26 stream <<
" Example: types::evaluate_lambdas<std::vector>(lambdas, 1.0, 2.0, 3.0) " <<
endL;
34 [](
auto&& x,
auto&& y,
auto&& z){
return x + y + z; } ,
37 [](
auto&& x,
auto&& y,
auto&& z){
return x * y + z; } ,
40 [](
auto&& x,
auto&& y,
auto&& z){
return x + y * z; } ,
43 [](
auto&& x,
auto&& y,
auto&& z){
return x - y + z; } ,
46 [](
auto&& x,
auto&& y,
auto&& z){
return x + y - z; } ,
49 [](
auto&& x,
auto&& y,
auto&& z){
return x / y + z; } ,
52 [](
auto&& x,
auto&& y,
auto&& z){
return x + y / z; } ,
55 [](
auto&& x,
auto&& y,
auto&& z){
return x / y * z; } ,
58 [](
auto&& x,
auto&& y,
auto&& z){
return x * y / z; } ,
61 [](
auto&& x,
auto&& y,
auto&& z){
return x - y * z; } ,
64 [](
auto&& x,
auto&& y,
auto&& z){
return x * y - z; } ,
67 [](
auto&& x,
auto&& y,
auto&& z){
return x * y * z; }
70 auto v_as_vector1 = types::evaluate_lambdas<std::vector>(lambdas, 1.0, 2.0, 3.0);
71 stream <<
"lambdas(1.0, 2.0, 3.0) as vector =\n\t" << v_as_vector1 <<
endL;
73 auto v_as_vector2 = types::evaluate_lambdas<std::vector>(lambdas, 2.0, 1.0, 3.0);
74 stream <<
"lambdas(2.0, 1.0, 3.0) as vector =\n\t" << v_as_vector2 <<
endL;
76 auto v_as_deque1 = types::evaluate_lambdas<std::deque>(lambdas, 1.0, 2.0, 3.0);
77 stream <<
"lambdas(1.0, 2.0, 3.0) as deque =\n\t" << v_as_deque1 <<
endL;
79 auto v_as_deque2 = types::evaluate_lambdas<std::deque>(lambdas, 2.0, 1.0, 3.0);
80 stream <<
"lambdas(2.0, 1.0, 3.0) as deque =\n\t" << v_as_deque2 <<
endL;
82 auto v_as_array1 = types::evaluate_lambdas<std::array>(lambdas, 1.0, 2.0, 3.0);
83 stream <<
"lambdas(1.0, 2.0, 3.0) as array =\n\t" << v_as_array1 <<
endL;
85 auto v_as_array2 = types::evaluate_lambdas<std::array>(lambdas, 2.0, 1.0, 3.0);
86 stream <<
"lambdas(2.0, 1.0, 3.0) as array =\n\t" << v_as_array2 <<
endL;
88 auto v_as_list1 = types::evaluate_lambdas<std::list>(lambdas, 1.0, 2.0, 3.0);
89 stream <<
"lambdas(1.0, 2.0, 3.0) as list =\n\t" << v_as_list1 <<
endL;
91 auto v_as_list2 = types::evaluate_lambdas<std::list>(lambdas, 2.0, 1.0, 3.0);
92 stream <<
"lambdas(2.0, 1.0, 3.0) as list =\n\t" << v_as_list2 <<
endL;
94 auto v_as_multiset1 = types::evaluate_lambdas<std::multiset>(lambdas, 1.0, 2.0, 3.0);
95 stream <<
"lambdas(1.0, 2.0, 3.0) as multiset =\n\t" << v_as_multiset1 <<
endL;
97 auto v_as_multiset2 = types::evaluate_lambdas<std::multiset>(lambdas, 2.0, 1.0, 3.0);
98 stream <<
"lambdas(2.0, 1.0, 3.0) as multiset =\n\t" << v_as_multiset2 <<
endL;
100 stream <<
"\t\t--- By Thomas Kim, Feb. 05, 2020. ---" <<
endl;
108 [](
auto&& x,
auto&& y,
auto&& z){
return x + y + z; } ,
111 [](
auto&& x,
auto&& y,
auto&& z){
return x * y + z; } ,
114 [](
auto&& x,
auto&& y,
auto&& z){
return x + y * z; } ,
117 [](
auto&& x,
auto&& y,
auto&& z){
return x - y + z; } ,
120 [](
auto&& x,
auto&& y,
auto&& z){
return x + y - z; } ,
123 [](
auto&& x,
auto&& y,
auto&& z){
return x / y + z; } ,
126 [](
auto&& x,
auto&& y,
auto&& z){
return x + y / z; } ,
129 [](
auto&& x,
auto&& y,
auto&& z){
return x / y * z; } ,
132 [](
auto&& x,
auto&& y,
auto&& z){
return x * y / z; } ,
135 [](
auto&& x,
auto&& y,
auto&& z){
return x - y * z; } ,
138 [](
auto&& x,
auto&& y,
auto&& z){
return x * y - z; } ,
141 [](
auto&& x,
auto&& y,
auto&& z){
return x * y * z; }
144 std::tuple arguments1{1.0, 2.0, 3.0};
145 std::tuple arguments2{1.0, 2.0, 3.0};
147 auto v_as_vector1 = types::evaluate_lambdas<std::vector>(lambdas, arguments1);
148 stream <<
"lambdas "<< arguments1 <<
" as vector =\n\t" << v_as_vector1 <<
endL;
150 auto v_as_vector2 = types::evaluate_lambdas<std::vector>(lambdas, arguments2);
151 stream <<
"lambdas "<< arguments2 <<
" as vector =\n\t" << v_as_vector2 <<
endL;
void test_evaluate_lambdas()
void summary_evaluate_lambdas()
void test_evaluate_lambdas_with_tuple()
Type to string name conversions are defined.
Stream output operators << are implemented.