См. этот пример в [class.base.init]/11
struct A {
A() = default; // OK
A(int v) : v(v) { } // OK
const int& v = 42; // OK
};
A a1; // error: ill-formed binding of temporary to reference
A a2(1); // OK, unfortunately
Оба clang и g++ компилируют код (clang with an warning), но я хотел бы понять, почему они печатают 0
для членов a1.v
и a2.v
? См. демо.