| // PR c++/19808 |
| // { dg-do compile { target c++11 } } |
| // { dg-options "-Wuninitialized -Winit-self" } |
| // Test that we don't warn when initializing a reference, unless it's |
| // self-init. |
| |
| struct R { |
| int &r; |
| }; |
| |
| struct S { |
| R r; |
| int a; |
| int &b; |
| int c; |
| }; |
| |
| struct X { |
| S s; |
| X() : s{ { s.a }, 1, s.c, 3} { } |
| }; |
| |
| struct A { |
| int &r; |
| A() : r{r} { } // { dg-warning ".A::r. is initialized with itself" } |
| }; |
| |
| struct B { |
| int &r; |
| int a; |
| B() : r{a} { } |
| }; |
| |
| struct C { |
| R x; |
| C() : x{x.r} { } // { dg-warning "member .C::x. is used uninitialized" } |
| }; |