c ++ 0x支持通过引用捕获值的lambda:
[&] -> ret_t { return 0; }
捕获const引用是否有意义?
[const &] -> ret_t { return 0; }
更基本的是手头的问题; 有没有办法检测作为std::function<>
传递的给定lambda是否没有副作用?
答案 0 :(得分:2)
您甚至无法保证std::function
中的内容是是否为lambda。你当然不能保证它没有副作用。
如果你想确保你编写的lambda函数没有副作用(在可以确保这些事情的范围内),唯一的方法是不捕获任何内容:[]
。< / p>