annotate gcc/testsuite/g++.dg/cpp0x/defaulted2.C @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 1830386684a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // Negative test for defaulted/deleted fns.
kono
parents:
diff changeset
2 // { dg-do compile { target c++11 } }
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 void f(); // { dg-message "previous" }
kono
parents:
diff changeset
5 void f() = delete; // { dg-error "deleted" }
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 struct A
kono
parents:
diff changeset
8 {
kono
parents:
diff changeset
9 A() { } // { dg-message "previous" }
kono
parents:
diff changeset
10 void f() = default; // { dg-error "default" }
kono
parents:
diff changeset
11 };
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 A::A() = default; // { dg-error "redefinition" }
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 void g() {} // { dg-message "previous" }
kono
parents:
diff changeset
16 void g() = delete; // { dg-error "redefinition" }
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 struct B // { dg-message "user-provided default constructor" }
kono
parents:
diff changeset
19 {
kono
parents:
diff changeset
20 int i;
kono
parents:
diff changeset
21 B() = default; // { dg-message "not user-provided" }
kono
parents:
diff changeset
22 };
kono
parents:
diff changeset
23
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
24 const B b; // { dg-error "uninitialized 'const" }
111
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 struct C
kono
parents:
diff changeset
27 {
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
28 virtual void f() = delete; // { dg-message "overridden" }
111
kono
parents:
diff changeset
29 };
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 struct D: public C
kono
parents:
diff changeset
32 {
kono
parents:
diff changeset
33 virtual void f(); // { dg-error "non-deleted function" }
kono
parents:
diff changeset
34 };
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 struct E
kono
parents:
diff changeset
37 {
kono
parents:
diff changeset
38 const B b; // { dg-message "should be initialized" }
kono
parents:
diff changeset
39 E() { } // { dg-error "uninitialized" }
kono
parents:
diff changeset
40 };
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 struct F
kono
parents:
diff changeset
43 {
kono
parents:
diff changeset
44 F() = default;
kono
parents:
diff changeset
45 F(const F&) = delete; // { dg-message "declared" }
kono
parents:
diff changeset
46 };
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 struct G
kono
parents:
diff changeset
49 {
kono
parents:
diff changeset
50 G();
kono
parents:
diff changeset
51 };
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 // ctor defaulted after class defn is not trivial
kono
parents:
diff changeset
54 G::G() = default;
kono
parents:
diff changeset
55
kono
parents:
diff changeset
56 union U
kono
parents:
diff changeset
57 {
kono
parents:
diff changeset
58 G g; // { dg-error "union member.*non-trivial" }
kono
parents:
diff changeset
59 };
kono
parents:
diff changeset
60
kono
parents:
diff changeset
61 int main()
kono
parents:
diff changeset
62 {
kono
parents:
diff changeset
63 F f;
kono
parents:
diff changeset
64 F f2(f); // { dg-error "use" }
kono
parents:
diff changeset
65 const B* b = new const B; // { dg-error "uninitialized const" }
kono
parents:
diff changeset
66 U u; // { dg-error "deleted" }
kono
parents:
diff changeset
67 }
kono
parents:
diff changeset
68
kono
parents:
diff changeset
69 // { dg-prune-output "implicitly deleted because" }