blob: da81abf07c9301f0fc1d2b45e3ad9a930ff2e785 [file] [log] [blame]
// PR c++/19808
// { dg-do compile { target c++11 } }
// { dg-options "-Wuninitialized" }
struct S {
int i, j, k, l;
S() : i{j}, // { dg-warning "member .S::j. is used uninitialized" }
j{1},
k{l + 1}, // { dg-warning "member .S::l. is used uninitialized" }
l{2} { }
};
struct A {
int a, b, c;
A() : a{b // { dg-warning "member .A::b. is used uninitialized" }
+ c} { } // { dg-warning "member .A::c. is used uninitialized" }
};
struct B {
int &r;
int *p;
int a;
B() : r{a}, p{&a}, a{1} { }
};
struct C {
const int &r1, &r2;
C () : r1{r2}, // { dg-warning "reference .C::r2. is not yet bound to a value when used here" }
r2{r1} { }
};
struct D {
int a = 1;
int b = 2;
D() : a{b + 1}, b{a + 1} { } // { dg-warning "member .D::b. is used uninitialized" }
};
struct E {
int a = 1;
E() : a{a + 1} { } // { dg-warning "member .E::a. is used uninitialized" }
};
struct F {
int a = 1;
int b;
F() : b{a + 1} { }
};
struct bar {
int a;
bar() {}
bar(bar&) {}
};
class foo {
bar first;
bar second;
public:
foo() : first{second} {} // { dg-warning "member .foo::second. is used uninitialized" }
};