编译器错误 C3492

“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);
}

另请参阅

Lambda 表达式