Inicializador entre chaves ou igual em uniões
Palavras-chave:Como inicializar um membro não-POD na União
O padrão diz
No máximo, um membro de dados não estáticos de uma união pode ter um inicializador entre chaves ou igual.
Mas
struct Point {
Point() {}
Point(int x, int y): x_(x), y_(y) {}
int x_, y_;
};
union U {
int z;
double w;
Point p = Point(1,2);
};
#include <iostream>
int main () {
U u;
std::cout << u.p.x_ << ":" << u.p.y_ << std::endl;
}
impressões4196960:0
em vez do esperado1:2
.
Considero isso um bug do compilador. É assim mesmo?