循环初始化语句中的未命名结构声明

iam*_*ind 5 c++ struct for-loop anonymous-class

在其中一个SO线程中,我曾看到使用未命名的structfor for for for循环中不同类型的多个变量的占位符:

例如:

for(struct {
      int i;
      double d;
      char c;
    } obj = { 1, 2.2, 'c' };
    obj.i < 10;
    ++obj.i)
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

这与g ++ 编译很好.
这是标准的C++ 03语法吗?

Mat*_*son 3

您可以在可以使用结构的任何地方使用未命名的结构 - 唯一的区别是它没有获得可以在其他地方使用的名称。您几乎可以在任何可以使用类型的地方声明新类型。在大多数地方这样做可能并不是特别有意义,但那是另一回事了。

除了非常特殊的情况外,我不会完全推荐这样做,但它是有效的。