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