boost :: bind和对temp变量的引用

dim*_*mba 2 c++ boost boost-bind object-lifetime boost-function

假设我有方法:

void foo(const std::string& s);
Run Code Online (Sandbox Code Playgroud)

我可以创建boost :: function:

boost::function<void(const std::string&)> f = boost::bind(foo, temp);
Run Code Online (Sandbox Code Playgroud)

其中temp是char*,在f被调用之前被删除.

ltj*_*jax 5

是.绑定不能知道char*可以保存在字符串中,或​​者它被传递给字符串.要规避这一点,请使用:

boost::bind(foo, std::string(temp));
Run Code Online (Sandbox Code Playgroud)

这样你的temp就会被复制到一个字符串中.