c++ - 无法使用嵌套的 lambda 捕获静态成员

标签 c++ visual-studio-2010 visual-c++ c++11 lambda

我的嵌套 lambda 函数有问题,它看不到静态类成员。由于我无法理解的原因,Visual Studio 2010 给了我一个 C2065(未声明的标识符)。

这是突出我的问题的简单案例:

#include <algorithm>
#include <vector>

using namespace std;

struct foo
{
    void do_some()
    {
        std::vector<int> a;
        std::vector<int> b;

        for_each( a.begin(), a.end(), [&] ( const int& m )
            {
                // works
                auto j = _i + 1;

                for_each( b.begin(), b.end(), [&] ( const int& n )
                    {
                        **// doesn't work**
                        auto k = _i + 1;
                    } );
            } );
    }

    static int _i;
};

int main(int argc, char* argv[])
{
}

有人知道我做错了什么吗?

谢谢, 基督徒

最佳答案

可能是编译器错误(已在 VC++ 2012 中修复)。这有效:

auto k = ::foo::_i + 1;

关于c++ - 无法使用嵌套的 lambda 捕获静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14388520/

相关文章:

visual-studio-2010 - 在Visual Studio中添加SQL Server数据连接

c++ - C++ 中的字节数组

c++ - 调试难以发现的异常

c++ - 仅当它为负时才摆弄 : Negate an int,

c++ - Vim:字符串间换行

c++ - EnumMonitors WinAPI 上的段错误

C++:强制完成模板编译(MSVC/G++)

visual-studio - 使用 : MFC Shared vs MFC statically linked 的常规 DLL

c++ - 仅从 EnumDesktopWindows 识别应用程序窗口

c++ - 试图在 C++ 中声明一个成员对象