Я обновлял свое понимание инициализации значения по сравнению с инициализацией по умолчанию и наткнулся на это :
struct C {
int x;
int y;
C () { }
};
int main () {
C c = C ();
}
По-видимому, это UB, потому что
В случае C () , есть конструктор, способный инициализация членов x и y, поэтому инициализация не выполняется. Поэтому попытка скопировать C () в c приводит к неопределенному поведению.
Думаю, я понимаю почему, но не уверен. Может кто-нибудь уточнить?
Означает ли это, что это тоже UB?
int x; x = x;
Кстати, что касается инициализации значения, гарантированно ли следующее будет нулевым?
int x = int ();