blob: 816249c2b9c85535814401cdc1cd529640f1c100 [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" }
};