File tree 2 files changed +15
-11
lines changed
2 files changed +15
-11
lines changed Original file line number Diff line number Diff line change 1
1
#pragma once
2
2
3
- namespace functions {
4
-
5
3
#include < iostream>
6
4
7
- int function (int x) { return x; }
8
-
9
- using FunctionPtr = decltype(&function);
5
+ namespace functions {
10
6
11
- FunctionPtr intermediary () { return function; }
7
+ std::function<void (int & p)> do_it (int & param) {
8
+ param++;
9
+ static int counter = 1 ;
10
+ std::cout << " do it #" << counter << " : param = " << param << std::endl;
11
+ counter++;
12
+ return [](int & p) { do_it (p); };
13
+ }
12
14
13
15
} // namespace functions
Original file line number Diff line number Diff line change 1
1
#include " gtest/gtest.h"
2
2
#include " self-pointed-function.hpp"
3
3
4
- using functions::FunctionPtr;
5
- using functions::intermediary;
4
+ using functions::do_it;
6
5
7
6
TEST (SelfPointedFunction, Call) {
8
- FunctionPtr f = intermediary ();
9
- constexpr int x = 10 ;
10
- EXPECT_EQ (f (x), x);
7
+ constexpr int initial = 42 ;
8
+ int var = initial; // NOLINT
9
+ auto do_it_again = do_it (var);
10
+ EXPECT_EQ (var, initial + 1 );
11
+ do_it_again (var);
12
+ EXPECT_EQ (var, initial + 2 );
11
13
}
You can’t perform that action at this time.
0 commit comments