C++11新特性のstd::mem_fn関数
4266 ワード
関数テンプレートstd::mem_fnは、メンバーへのポインタを格納、コピー、および呼び出すことができるパッケージオブジェクトを生成する.呼び出しstd::mem_fnの場合、オブジェクトの参照とポインタ(スマートポインタを含む)を使用できます.例:
結果は:Hello,world.number: 42 data: 7
#include
#include
struct Foo {
void display_greeting() {
std::cout << "Hello, world.
";
}
void display_number(int i) {
std::cout << "number: " << i << '
';
}
int data = 7;
};
int main() {
Foo f;
auto greet = std::mem_fn(&Foo::display_greeting);
greet(f);
auto print_num = std::mem_fn(&Foo::display_number);
print_num(f, 42);
auto access_data = std::mem_fn(&Foo::data);
std::cout << "data: " << access_data(f) << '
';
}
結果は:Hello,world.number: 42 data: 7