【发布时间】:2020-05-23 10:10:16
【问题描述】:
有人能解释一下这里发生了什么吗(GCC 7.3):
#include <thread>
#include <iostream>
struct A
{
struct B {};
};
int main()
{
int var = 0;
std::thread([c=A::B(), var](){ }); // error: ‘var’ was not declared in this scope
std::thread([c=A(), var](){ }); // OK
std::thread([c=A::B(), var=var](){ }); // OK
return 0;
}
当我捕获嵌套结构时,我得到了:
'var' 未在此范围内声明
另一方面,捕获非嵌套结构是可行的。也可以通过初始化进行捕获。此外,所有案例都可以在 Visual Studio 中使用。
【问题讨论】: