OSDN Git Service

PR c++/36628
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / cpp0x / defaulted2.C
1 // Negative test for defaulted/deleted fns.
2 // { dg-options "-std=c++0x" }
3
4 void f();                       // { dg-error "previous" }
5 void f() = delete;              // { dg-error "deleted" }
6
7 struct A
8 {
9   A() { }                       // { dg-error "previous" }
10   void f() = default;           // { dg-error "default" }
11 };
12
13 A::A() = default;               // { dg-error "redefinition" }
14
15 void g() {}                     // { dg-error "previous" }
16 void g() = delete;              // { dg-error "redefinition" }
17
18 struct B
19 {
20   B() = default;
21 };
22
23 const B b;                      // { dg-error "uninitialized const" }
24
25 struct C
26 {
27   virtual void f() = delete;    // { dg-error "overriding deleted" }
28 };
29
30 struct D: public C
31 {
32   virtual void f();             // { dg-error "non-deleted function" }
33 };
34
35 struct E
36 {
37   const B b;
38   E() { }                       // { dg-error "uninitialized" }
39 };
40
41 struct F
42 {
43   F() = default;
44   F(const F&) = delete;         // { dg-error "deleted" }
45 };
46
47 struct G
48 {
49   G();
50 };
51
52 // ctor defaulted after class defn is not trivial
53 G::G() = default;
54
55 union U
56 {
57   G g;                          // { dg-error "constructor" }
58 };
59
60 int main()
61 {
62   F f;
63   F f2(f);                      // { dg-error "used" }
64   B* b = new const B;           // { dg-error "uninitialized const" }
65 }
66