“var”:lambda 捕获必须有自动存储持续时间
不能捕获没有自动存储持续时间的变量,如标记为 static
或 extern
的变量。
更正此错误
- 不要将
static
或extern
变量传递到 lambda 表达式的捕获列表。
示例
下面的示例将生成 C3495,因为 lambda 表达式的捕获列表中出现了 static
变量 n
:
// C3495.cpp
int main()
{
static int n = 66;
[&n]() { return n; }(); // C3495
}