【发布时间】:2009-07-21 10:31:37
【问题描述】:
当我们绑定到成员变量时,我对 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)));
【问题讨论】:
标签: c++ boost boost-bind