“var”: 不能捕获匿名联合的成员
不能捕获未命名联合的成员。
更正此错误
- 为联合提供一个名称,并将整个此联合结构传递到 lambda 表达式的捕获列表。
示例
以下示例将生成 C3492,因为它捕获匿名联合的成员:
// C3492a.cpp
int main()
{
union
{
char ch;
int x;
};
ch = 'y';
[&x](char ch) { x = ch; }(ch); // C3492
}
通过给此联合提供名称以及将整个联合结构传递给 lambda 表达式的捕获列表,下面的示例解析了 C3492:
// C3492b.cpp
int main()
{
union
{
char ch;
int x;
} u;
u.ch = 'y';
[&u](char ch) { u.x = ch; }(u.ch);
}