void function1( int a,double b ){ ... };
これを関数名でほか関数に渡したい場合。
std::function<void(int,double)> F1= std::bind( function1, std:placeholders::_1, std::pleaseholders::_2 );
F1(3,3.14);
みたいな感じで。
funciton1 は前で規定した、変数化?したい関数
std::placeholders::_1 F1の第1引数 → function1 の a に入る
std::placeholders::_2 F1の第2引数 → function1 の b に入る10個くらいは引数付けられるみたいだ。※引数の代わりに固定値も可、ただしstd:placeholdersを使うなら_1から順に
クラスの自分の中の関数を指定の場合class aaa{void function2( int c ){ ... };
void function3( int d ){ std::function<void(int)> F2= std::bind( function1, this, std:placeholders::_1 );
F2(5);
};
};
クラスで使うなら、std::bindの第2引数にインスタンスを入れる。自分のインスタンスの関数ならthisとなる。
std::function<>の部分はautoにしとくと記載は楽。だが場所を選ぶかも。
C++11から対応です。