C++0x 中的闭包和嵌套 lambda
使用 C++0x,当 lambda 中包含 lambda 时,如何捕获变量?例如:
std::vector<int> c1;
int v = 10; <--- I want to capture this variable
std::for_each(
c1.begin(),
c1.end(),
[v](int num) <--- This is fine...
{
std::vector<int> c2;
std::for_each(
c2.begin(),
c2.end(),
[v](int num) <--- error on this line, how do I recapture v?
{
// Do something
});
});
Using C++0x, how do I capture a variable when I have a lambda within a lambda? For example:
std::vector<int> c1;
int v = 10; <--- I want to capture this variable
std::for_each(
c1.begin(),
c1.end(),
[v](int num) <--- This is fine...
{
std::vector<int> c2;
std::for_each(
c2.begin(),
c2.end(),
[v](int num) <--- error on this line, how do I recapture v?
{
// Do something
});
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不是特别干净,但确实有效。
Not especially clean, but it does work.
我能想到的最好的办法是:
有趣的问题!我会好好睡一觉,看看是否能想出更好的办法。
The best I could come up with is this:
Interesting problem! I'll sleep on it and see if i can figure something better out.
在内部 lambda 中,您应该具有(假设您想通过引用传递变量):
In the inner lambda you should have(assuming you want to pass the variable by reference):