// PR c++/43719 // { dg-do compile } struct A1 // { dg-error "uninitialized" "" { target c++11 } } { int const j; // { dg-message "should be initialized" } }; struct A2 // { dg-error "uninitialized" "" { target c++11 } } { int const volatile i; // { dg-message "should be initialized" } }; struct A3 // { dg-error "uninitialized" "" { target c++11 } } { int& ref; // { dg-message "should be initialized" } }; struct A4 // { dg-error "uninitialized" "" { target c++11 } } { int const& ref; // { dg-message "should be initialized" } }; struct A5 // { dg-error "uninitialized" "" { target c++11 } } { int& ref; // { dg-message "should be initialized" } int const i; // { dg-message "should be initialized" } }; template struct S1 // { dg-error "uninitialized" "" { target c++11 } } { T const i; // { dg-message "should be initialized" } }; template struct S2 // { dg-error "uninitialized" "" { target c++11 } } { T const volatile i; // { dg-message "should be initialized" } }; template struct S3 // { dg-error "uninitialized" "" { target c++11 } } { T& ref; // { dg-message "should be initialized" } }; template struct S4 // { dg-error "uninitialized" "" { target c++11 } } { T const i; // { dg-message "should be initialized" } T& ref; // { dg-message "should be initialized" } }; struct X { X () : c (0), r (c) {} int const c; int const& r; }; struct Y11 // { dg-error "uninitialized" "" { target c++11 } } { int const i; // { dg-message "should be initialized" } }; struct Y1 // { dg-error "deleted" "" { target c++11 } } { Y11 a[1]; }; struct Y22 // { dg-error "uninitialized" "" { target c++11 } } { int& ref; // { dg-message "should be initialized" } }; struct Y2 // { dg-error "deleted" "" { target c++11 } } { Y22 a[1]; }; struct Z1 // { dg-error "uninitialized" "" { target c++11 } } { int const i; // { dg-message "should be initialized" } }; struct Z2 // { dg-error "uninitialized" "" { target c++11 } } { int& ref; // { dg-message "should be initialized" } }; struct Z3 // { dg-error "uninitialized" "" { target c++11 } } { int const i; // { dg-message "should be initialized" } }; struct Z4 // { dg-error "uninitialized" "" { target c++11 } } { int& ref; // { dg-message "should be initialized" } }; struct Z5 { int i; }; struct Z // { dg-error "deleted" "" { target c++11 } } { Z1 z1; Z2 z2; Z3 z3; Z4 z4; Z5 z5; }; union U // { dg-error "uninitialized" "" { target c++11 } } { int const i; // { dg-message "should be initialized" } }; void f1 () { A1 a1; // { dg-error "uninitialized const member|deleted" } } void f2 () { A2 a2; // { dg-error "uninitialized const member|deleted" } } void f3 () { A3 a3; // { dg-error "uninitialized reference member|deleted" } } void f4 () { A4 a4; // { dg-error "uninitialized reference member|deleted" } } void f5 () { A5 a5; // { dg-error "uninitialized reference member|uninitialized const member|deleted" } } void f6 () { S1 s; // { dg-error "uninitialized const member|deleted" } } void f7 () { S2 s; // { dg-error "uninitialized const member|deleted" } } void f8 () { S3 s; // { dg-error "uninitialized reference member|deleted" } } void f9 () { S4 s; // { dg-error "uninitialized reference member|uninitialized const member|deleted" } } void f10 () { X x; } void f11 () { A1 a[ 1 ]; // { dg-error "uninitialized const member|deleted" } } void f12 () { A3 a[ 1 ]; // { dg-error "uninitialized reference member|deleted" } } void f13 () { Y1 y1; // { dg-error "uninitialized const member|deleted" } } void f14 () { Y2 y2; // { dg-error "uninitialized reference member|deleted" } } void f15 () { Z z; // { dg-error "uninitialized reference member|uninitialized const member|deleted" } } void f16 () { U u; // { dg-error "uninitialized const member|deleted" } }