C++11新特性のstd::mem_fn関数

4266 ワード

関数テンプレートstd::mem_fnは、メンバーへのポインタを格納、コピー、および呼び出すことができるパッケージオブジェクトを生成する.呼び出しstd::mem_fnの場合、オブジェクトの参照とポインタ(スマートポインタを含む)を使用できます.例:
#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