Jestem zdezorientowany co do tego, co wywołuje :: bind, gdy wiążemy ze zmiennymi składowymi. Z wiązaniem do funkcji składowej, w zasadzie tworzymy obiekt funkcji, a następnie wywołujemy przekazywanie do niego argumentów, które są dostarczane lub opóźniane i zastępowane przez placeholder.Powiązanie ze zmienną składową
Ale co to wyrażenie ma za kulisami:
boost::bind(&std::pair::second, _1);
Co dostaje podstawionych w miejsce zastępczy _1?
Znalazłem to podczas czytania tego przykładu z artykułu na boost :: wiąże:
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)));