Xem ví dụ này trong [class.base.init]/11Tại sao clang và g ++ in 0 cho a1.v và a2.v trong ví dụ này trong C++ 1z?
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
Cả kêu vang và g ++ biên dịch mã (kêu vang với một cảnh báo), nhưng tôi muốn hiểu tại sao họ lại in 0
cho các thành viên a1.v
và a2.v
? Xem demo.
Nghiêm ngặt liên quan (gần như là dup): http://stackoverflow.com/questions/21481481/initializing-reference-member-variable-with-literal – edmz