我的嵌套 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/