Einige C ++ - Compiler erlauben anonyme Vereinigungen und Strukturen als Erweiterung von Standard-C ++. Es ist ein bisschen syntaktischer Zucker, der gelegentlich sehr hilfreich ist.
Was ist die Begründung, die verhindert, dass dies Teil des Standards ist? Gibt es eine technische Straßensperre? Eine philosophische? Oder einfach nicht genug, um es zu rechtfertigen?
Hier ist ein Beispiel von dem, wovon ich spreche:
struct vector3 {
union {
struct {
float x;
float y;
float z;
};
float v[3];
};
};
Mein Compiler akzeptiert dies, warnt jedoch davor, dass "nameless struct / union" eine nicht standardmäßige Erweiterung von C ++ ist .
struct { int i; } a; a.i = 0;
(der Typ hat keinen Namen). Der zweite ist dieser, den C ++ nicht unterstützt: struct { int i; }; i = 0;
(Der Typ hat keinen Namen und entweicht in den umgebenden Bereich). C ++, jedoch funktioniert sowohl unbenannte und anonym unterstützen Gewerkschaften .