1 // PR c++/89214
2 // { dg-do compile { target c++17 } }
3
4 struct A
5 {
6 A (int);
7 };
8
9 struct BB
10 {
11 A a;
12 };
13
14 struct B : BB
15 {
16 };
17
18 void
foo()19 foo ()
20 {
21 B b1 = {42};
22 B b2 = {{42}};
23 B b3 = {{{42}}};
24
25 B b4 = B{42};
26 B b5 = B{{42}};
27 B b6 = B{{{42}}};
28
29 B b7 = {B{42}};
30 B b8 = {B{{42}}};
31 B b9 = {B{{{42}}}};
32
33 B b10 = {{B{42}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" }
34 B b11 = {{B{{42}}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" }
35 B b12 = {{B{{{42}}}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" }
36
37 B bb1{42};
38 B bb2{{42}};
39 B bb3{{{42}}};
40
41 B bb7{B{42}};
42 B bb8{B{{42}}};
43 B bb9{B{{{42}}}};
44
45 B bb10{{B{42}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" }
46 B bb11{{B{{42}}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" }
47 B bb12{{B{{{42}}}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" }
48 }
49