我的代码如下
#include <iostream>
#include <string>
using namespace std;
int x;
struct A
{
auto func()
{
auto test([&, &x](){cout << x << endl;});
test();
}
};
int main()
{
A a;
x = 5;
a.func();
}
我的程序如上所述,我用以下命令编译了它
g++ -std=c++11 ex.cpp -o ex
但是,我收到如下警告
ex.cpp:在成员函数“自动A :: func()”中:
例如:cpp:11:19:警告:捕获具有非自动存储期限的变量“ x”
auto test([&, &x](){cout << x << endl;});
^
例如:cpp:6:5:注意:在此处声明了“ int x”
int x;
有人可以帮我解决吗?
答案 0 :(得分:0)
您的lambda实际上没有捕获任何东西:
x
是全局变量(如std::cout
)。
只需删除捕获:
auto func()
{
auto test([](){ std::cout << x << std::endl; });
test();
}