这将编译:为什么在lambdas中隐式捕获const int(或短裤)?
int main() {
const int x = 123;
auto g = []() { std::cout << x << "\n"; };
g();
}
但这:
int main(){
const float x = 123;
auto g = []() { std::cout << x << "\n"; };
g();
}
生产:
"error: 'x' is not captured"
为什么?
我已经在GCC(从5.0.0到8.0.0的各种版本)和Clang(从4.0.0到6.0.0的各种版本)上测试过它。它在所有情况下表现相同。
http://en.cppreference.com/w/cpp/language/lambda您需要指定要捕获的变量 – StijnvanGaal
@StijnvanGaal:我对OP知道的印象。 – Bathsheba
这是什么编译器和版本? – deviantfan