C++ Library Extensions 2022.12.09
To help learn modern C++ programming
14-invoke.cpp
Go to the documentation of this file.
1#include <tpf_output.hpp>
2
5
6int sum(int a, int b)
7{
8 return a + b;
9}
10
11struct Product
12{
13 int operator()(int a, int b) const
14 {
15 return a * b;
16 }
17
18 int summation(int a, int b, int c)
19 {
20 return a + b + c;
21 }
22
23};
24
26{
27
28 stream <<"sum(2, 3) = " << std::invoke(sum, 2, 3) << endl;
29
30 stream << "Product(3, 4) = "
31 << std::invoke(Product(), 3, 4) << endl;
32
33 stream << "&Product::summation(1, 2, 3) = "
34 << std::invoke(&Product::summation, Product{}, 1, 2, 3) << endl;
35
36 stream <<"Lambda(3, 4) = "
37 << std::invoke([](int a, int b){ return a * b; } , 3, 4) << endl;
38
39 auto closure = [](int a, int b, int c)
40 {
41 return (a + b) * c;
42 } ;
43
44 stream <<"closure(3, 3, 2) = " << std::invoke(closure, 3, 3, 2) << endl;
45}
46
47int main()
48{
50}
tpf::sstream stream
Definition: 14-invoke.cpp:3
int sum(int a, int b)
Definition: 14-invoke.cpp:6
auto endl
Definition: 14-invoke.cpp:4
int main()
Definition: 14-invoke.cpp:47
void test_invoke()
Definition: 14-invoke.cpp:25
constexpr auto endl
Definition: tpf_output.hpp:973
int operator()(int a, int b) const
Definition: 14-invoke.cpp:13
int summation(int a, int b, int c)
Definition: 14-invoke.cpp:18
Stream output operators << are implemented.