Merged trunk at revision 161680 into branch.
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / defaulted2.C
blob909ebc5e6e09d9009e2360937a67111d575f4360
1 // Negative test for defaulted/deleted fns.
2 // { dg-options "-std=c++0x" }
4 void f();                       // { dg-error "previous" }
5 void f() = delete;              // { dg-error "deleted" }
7 struct A
9   A() { }                       // { dg-error "previous" }
10   void f() = default;           // { dg-error "default" }
13 A::A() = default;               // { dg-error "redefinition" }
15 void g() {}                     // { dg-error "previous" }
16 void g() = delete;              // { dg-error "redefinition" }
18 struct B // { dg-message "user-provided default constructor" }
20     B() = default;              // { dg-message "not user-provided" }
23 const B b;                      // { dg-error "uninitialized const" }
25 struct C
27   virtual void f() = delete;    // { dg-error "overriding deleted" }
30 struct D: public C
32   virtual void f();             // { dg-error "non-deleted function" }
35 struct E
37   const B b;
38   E() { }                       // { dg-error "uninitialized" }
41 struct F
43   F() = default;
44   F(const F&) = delete;         // { dg-error "declared" }
47 struct G
49   G();
52 // ctor defaulted after class defn is not trivial
53 G::G() = default;
55 union U
57   G g;                          // { dg-error "constructor" }
60 int main()
62   F f;
63   F f2(f);                      // { dg-error "use" }
64   B* b = new const B;           // { dg-error "uninitialized const" }