C++ 中真的有 Anonymous class/struct 吗?

Is there really an Anonymous class/struct in C++?

我对许多网站感到困惑:那里的人将 class/struct 没有名字的人称为匿名,例如:

struct{
   int x = 0;
}a;

我认为上面的例子创建了一个未命名的 struct 但不是匿名的 struct。我认为匿名 struct/class 在结束 class 主体的大括号之后和结束 class 定义的分号之前没有名称或声明符:

class { // Anonymous class
   int x_ = 0;
}; // no delcarator here

当然,标准会拒绝上述声明,因为它的格式不正确。

在上面的这个例子中,我声明了一个未命名的(但不是匿名的)联合,这类似于上面的 class/structs。

那么我的想法对吗?如果没有,请指导我。谢谢!

在 C++ 标准 (N4659) 的术语中,只有联合可以是“匿名的”。短语“anonymous class”和“anonymous struct”都没有出现在标准中的任何地方。事实上,“匿名”一词本身在标准中只出现了 44 次:42 次后跟“联合”一词,在索引的“联合”子列表下单独出现了两次。