Связано: Как инициализировать член не-POD в Союзе
В стандарте говорится
Не более одного нестатического члена данных объединения может иметь инициализатор с привязкой или равным.
Но
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;
}
выводит 4196960:0
вместо ожидаемого 1:2
.
Я считаю это ошибкой компилятора. Это так?