c – 在本地类中定义lambda时,C2326函数无法访问“bar”

我遇到了一些涉及本地类和lambdas的奇怪的编译器错误.我已将其缩小到以下示例:

int main()
{
    class test {
        void foo(int bar) {
            auto lambda = [=] (int) { return bar; };
        }
    };
    return 0;
}

VS10说:

error C2326: ‘void main::test::foo(int)’ : function cannot access ‘bar’

在本地类中使用lambdas是否有任何限制,或者这是编译器中的错误?

谢谢你的帮助.

最佳答案 我可以确认只有在函数中定义类并且lambda接受参数时才会在VS10中发生这种情况.

g中没有出现这样的问题.

我相信这确实是一个错误,如果你打开一个缺陷请在这里链接到它,所以我们可以跟进它(否则让我知道,我会打开一个缺陷).

点赞