Alguns compiladores C ++ permitem uniões e estruturas anônimas como uma extensão do C ++ padrão. É um pouco de açúcar sintático que às vezes é muito útil.
Qual é a lógica que impede que isso faça parte do padrão? Existe um obstáculo técnico? Filosófico? Ou apenas não o suficiente para justificar isso?
Aqui está um exemplo do que estou falando:
struct vector3 {
union {
struct {
float x;
float y;
float z;
};
float v[3];
};
};
Meu compilador aceitará isso, mas avisa que "struct / union sem nome" é uma extensão não padrão para C ++ .
struct { int i; } a; a.i = 0;
(o tipo não tem nome). O segundo é este, que C ++ não suporta: struct { int i; }; i = 0;
(o tipo não tem nome e escapa para o escopo circundante). C ++, no entanto, faz suportar ambos sem nome e anônimos sindicatos .