静的クラスメンバーを認識できないネストされたラムダ関数に問題があります。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[])
{
}
誰かが私が間違っていることを知っていますか?
ありがとう、クリスチャン