boost::bind
boost::function の引数を自由に設定することが出来る。
#include <boost/function.hpp> #include <boost/functional.hpp> #include <boost/bind.hpp> int division(int n, int m){ return n / m; } int main(){ // あらかじめ引数を設定することが出来る boost::function<int()> div_6_3 = boost::bind(division, 6, 3); assert( div_6_3() == division(6, 3) ); // ::_1 等を設定すれば、呼び出し時にその引数の順番で渡せる boost::function<int(int, int)> div = boost::bind(division, ::_1, ::_2); assert( div(14, 7) == division(14, 7) ); // こんなことも… boost::function<int(int, int)> div2 = boost::bind(division, ::_2, ::_1); assert( div2(6, 18) == division(18, 6) ); return 0; }
あらかじめ、boost::function に引数を渡すことが出来たりします。
この時に関数の型が変わるので注意が必要。
- _1 や ::_2 を使った引数の順番の操作はイメージし辛いので実際に触ってみるといいと思います。
[boost]
ver 1.44.0
[参照]
http://www.kmonos.net/alang/boost/classes/bind.html