2

静的クラスメンバーを認識できないネストされたラムダ関数に問題があります。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

おそらくコンパイラのバグ(VC ++ 2012で修正)。これは機能します:

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