C2326 函数无法访问“bar”在本地类中定义 lambda 时
我遇到了一些涉及本地类和 lambda 的奇怪编译器错误。我将其范围缩小到以下示例:
int main()
{
class test {
void foo(int bar) {
auto lambda = [=] (int) { return bar; };
}
};
return 0;
}
VS10 说:
错误 C2326:“void main::test::foo(int)”:函数无法访问“bar”
在本地类中使用 lambda 是否有任何限制,或者这是编译器中的错误?
谢谢四位的帮助。
I have hit some strange compiler error involving local classes and lambdas. I have narrowed it down to the following example:
int main()
{
class test {
void foo(int bar) {
auto lambda = [=] (int) { return bar; };
}
};
return 0;
}
And VS10 says:
error C2326: 'void main::test::foo(int)' : function cannot access 'bar'
Are there any limitations on using lambdas in local classes or is this a bug in the compiler?
Thanks four your help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我可以确认,只有当该类在函数中定义并且 lambda 接受参数时,这种情况才会在 VS10 中发生。
g++中不会出现这样的问题。
我相信这确实是一个错误,如果您打开一个缺陷,请在此处链接到它,以便我们可以跟进它(否则请告诉我,我将打开一个缺陷)。
I can confirm that this happens in VS10 only when the class is defined in a function and the lambda accepts a parameter.
No such problems appear in g++.
I believe this is indeed a bug, if you open a defect please link to it here so we can follow up on it (otherwise let me know and I'll open a defect).
你是否尝试过
也许VS10中的lambda实现并不完整,因为你的示例在g++4.5上运行良好 - http: //www.ideone.com/5xQpz
And have you tried
Maybe implementation of lambdas in VS10 is not complete, because your example works fine on g++4.5 - http://www.ideone.com/5xQpz