今天有朋友跟我说这么干没问题:
void test() {
const string &s = some_func();
add_callback([s] {
do_something_to(s);
});
}
我的理解,这个 lambda 会被扩展成这样子:
class lambda {
const string &s;
operator () {}
};
一旦这个 lambda 离开了 test(),被 capture 的 s 就不对了。
而我朋友认为是这样:
class lambda {
const string s;
operatior () {}
};
有熟读标准的说说这个怎么回事吗?
--
FROM 110.81.42.*