Tôi đang bối rối như những gì tăng :: ràng buộc hiện khi chúng tôi liên kết với các biến thành viên. Với việc liên kết với hàm thành viên, về cơ bản chúng ta tạo ra một đối tượng hàm, và sau đó gọi nó tới đối số được cung cấp hoặc bị trì hoãn và được thay thế qua trình giữ chỗ.Ràng buộc với biến thành viên
Nhưng những gì hiện biểu hiện này làm đằng sau hậu trường:
boost::bind(&std::pair::second, _1);
gì bị thay thế ở vị trí của placeholder _1?
Tôi tìm thấy điều này trong khi đọc ví dụ này từ một bài viết về tăng :: ràng buộc:
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)));