개요
- 인자로 전달된 함수에 대한 전달 호출 래퍼를 생성하는 함수
- bind_front
예제
- 코드
#include <functional>
#include <iostream>
using namespace std;
int main() {
auto test1 = []() {
auto plus = [](int x, int y, int z) { return x + y + z; };
auto bind1 = bind_front(plus, 1);
cout << bind1(2, 3) << endl;
auto bind2 = bind_front(plus, 1, 2);
cout << bind2(3) << endl;
auto bind3 = bind_front(plus, 1, 2, 3);
cout << bind3() << endl;
};
test1();
cout << endl << "------" << endl << endl;
auto test2 = []() {
class Test {
private:
int i;
public:
Test(int i) : i(i) {}
int plus(int value) { return this->i + value; }
void SetI(int i) { this->i = i; };
};
auto bind1 = bind_front(mem_fn(&Test::plus), Test(1));
cout << bind1(10) << endl;
cout << "~~~~~~" << endl;
Test t1(1);
auto bind2 = bind_front(mem_fn(&Test::plus), t1);
cout << bind2(10) << endl;
t1.SetI(-1);
cout << bind2(10) << endl;
cout << "~~~~~~" << endl;
Test t2(1);
auto bind3 = bind_front(mem_fn(&Test::plus), &t2);
cout << bind3(10) << endl;
t2.SetI(-1);
cout << bind3(10) << endl;
};
test2();
return 0;
}
- 실행 결과
6
6
6
------
11
~~~~~~
11
11
~~~~~~
11
9