メンバ変数にバインドするときにboost :: bindは何をするのか混乱します。メンバー関数へのバインドでは、本質的に関数オブジェクトを作成し、それを引数に渡して渡すか、遅延させ、プレースホルダーで置き換えます。メンバ変数へのバインド
しかし、この表現は、舞台裏で何をするのか:
boost::bind(&std::pair::second, _1);
プレースホルダ_1の代わりに置換しますか?
私はこの中には、ブーストの記事からこの例を読んで見つけ::バインド:それはメンバーポインタを使用して渡されたに適用される舞台裏
void print_string(const std::string& s) {
std::cout << s << '\n';
}
std::map<int,std::string> my_map;
my_map[0]="Boost";
my_map[1]="Bind";
std::for_each(
my_map.begin(),
my_map.end(),
boost::bind(&print_string, boost::bind(
&std::map<int,std::string>::value_type::second,_1)));