2

我有一个嵌套 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[])
{
}

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

谢谢,克里斯蒂安

4

1 回答 1

6

Probably a compiler bug (fixed in VC++ 2012). This works:

auto k = ::foo::_i + 1;
于 2013-01-18T15:28:54.573 回答