Я не понимаю, что делает boost::bind, когда мы привязываемся к переменным-членам. При привязке к функции-члену мы, по сути, создаем объект функции, а затем вызываем его, передавая ему аргументы, которые предоставляются или задерживаются и заменяются с помощью заполнителей.
Но что это выражение делает за кадром:
boost::bind(&std::pair::second, _1);
Что заменяется вместо заполнителя _1?
Я нашел это, читая этот пример из статьи о boost::bind:
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)));