ambiguous.cc revision 1.7 1 1.7 christos class empty { };
2 1.1 christos
3 1.1 christos class A1 {
4 1.1 christos public:
5 1.1 christos int x;
6 1.1 christos int y;
7 1.1 christos };
8 1.1 christos
9 1.1 christos class A2 {
10 1.1 christos public:
11 1.1 christos int x;
12 1.1 christos int y;
13 1.1 christos };
14 1.1 christos
15 1.1 christos class A3 {
16 1.1 christos public:
17 1.1 christos int x;
18 1.1 christos int y;
19 1.1 christos };
20 1.1 christos
21 1.7 christos #if !defined (__GNUC__) || __GNUC__ > 7
22 1.7 christos # define NO_UNIQUE_ADDRESS [[no_unique_address]]
23 1.7 christos #else
24 1.7 christos # define NO_UNIQUE_ADDRESS
25 1.7 christos #endif
26 1.7 christos
27 1.7 christos class A4 {
28 1.7 christos public:
29 1.7 christos NO_UNIQUE_ADDRESS empty x;
30 1.7 christos };
31 1.7 christos
32 1.1 christos class X : public A1, public A2 {
33 1.1 christos public:
34 1.1 christos int z;
35 1.1 christos };
36 1.1 christos
37 1.1 christos class L : public A1 {
38 1.1 christos public:
39 1.1 christos int z;
40 1.1 christos };
41 1.1 christos
42 1.1 christos class LV : public virtual A1 {
43 1.1 christos public:
44 1.1 christos int z;
45 1.1 christos };
46 1.1 christos
47 1.1 christos class M : public A2 {
48 1.1 christos public:
49 1.1 christos int w;
50 1.1 christos };
51 1.1 christos
52 1.1 christos class N : public L, public M {
53 1.1 christos public:
54 1.1 christos int r;
55 1.1 christos };
56 1.1 christos
57 1.1 christos class K : public A1 {
58 1.1 christos public:
59 1.1 christos int i;
60 1.1 christos };
61 1.1 christos
62 1.1 christos class KV : public virtual A1 {
63 1.1 christos public:
64 1.1 christos int i;
65 1.1 christos };
66 1.1 christos
67 1.1 christos class J : public K, public L {
68 1.1 christos public:
69 1.1 christos int j;
70 1.1 christos };
71 1.1 christos
72 1.1 christos class JV : public KV, public LV {
73 1.1 christos public:
74 1.1 christos int jv;
75 1.1 christos };
76 1.1 christos
77 1.1 christos class JVA1 : public KV, public LV, public A1 {
78 1.1 christos public:
79 1.1 christos int jva1;
80 1.1 christos };
81 1.1 christos
82 1.1 christos class JVA2 : public KV, public LV, public A2 {
83 1.1 christos public:
84 1.1 christos int jva2;
85 1.1 christos };
86 1.1 christos
87 1.1 christos class JVA1V : public KV, public LV, public virtual A1 {
88 1.1 christos public:
89 1.1 christos int jva1v;
90 1.1 christos };
91 1.1 christos
92 1.7 christos class JE : public A1, public A4 {
93 1.7 christos public:
94 1.7 christos };
95 1.7 christos
96 1.1 christos int main()
97 1.1 christos {
98 1.1 christos A1 a1;
99 1.1 christos A2 a2;
100 1.1 christos A3 a3;
101 1.1 christos X x;
102 1.1 christos L l;
103 1.1 christos M m;
104 1.1 christos N n;
105 1.1 christos K k;
106 1.1 christos J j;
107 1.1 christos JV jv;
108 1.1 christos JVA1 jva1;
109 1.1 christos JVA2 jva2;
110 1.1 christos JVA1V jva1v;
111 1.7 christos JE je;
112 1.1 christos
113 1.1 christos int i;
114 1.1 christos
115 1.1 christos i += k.i + m.w + a1.x + a2.x + a3.x + x.z + l.z + n.r + j.j;
116 1.1 christos
117 1.7 christos /* Initialize all the fields. Keep the order the same as in the
118 1.7 christos .exp file. */
119 1.7 christos
120 1.7 christos a1.x = 1;
121 1.7 christos a1.y = 2;
122 1.7 christos
123 1.7 christos a2.x = 1;
124 1.7 christos a2.y = 2;
125 1.7 christos
126 1.7 christos a3.x = 1;
127 1.7 christos a3.y = 2;
128 1.7 christos
129 1.7 christos x.A1::x = 1;
130 1.7 christos x.A1::y = 2;
131 1.7 christos x.A2::x = 3;
132 1.7 christos x.A2::y = 4;
133 1.7 christos x.z = 5;
134 1.7 christos
135 1.7 christos l.x = 1;
136 1.7 christos l.y = 2;
137 1.7 christos l.z = 3;
138 1.7 christos
139 1.7 christos m.x = 1;
140 1.7 christos m.y = 2;
141 1.7 christos m.w = 3;
142 1.7 christos
143 1.7 christos n.A1::x = 1;
144 1.7 christos n.A1::y = 2;
145 1.7 christos n.A2::x = 3;
146 1.7 christos n.A2::y = 4;
147 1.7 christos n.w = 5;
148 1.7 christos n.r = 6;
149 1.7 christos n.z = 7;
150 1.7 christos
151 1.7 christos k.x = 1;
152 1.7 christos k.y = 2;
153 1.7 christos k.i = 3;
154 1.7 christos
155 1.7 christos j.K::x = 1;
156 1.7 christos j.K::y = 2;
157 1.7 christos j.L::x = 3;
158 1.7 christos j.L::y = 4;
159 1.7 christos j.i = 5;
160 1.7 christos j.z = 6;
161 1.7 christos j.j = 7;
162 1.7 christos
163 1.7 christos jv.x = 1;
164 1.7 christos jv.y = 2;
165 1.7 christos jv.i = 3;
166 1.7 christos jv.z = 4;
167 1.7 christos jv.jv = 5;
168 1.7 christos
169 1.7 christos jva1.KV::x = 1;
170 1.7 christos jva1.KV::y = 2;
171 1.7 christos jva1.LV::x = 3;
172 1.7 christos jva1.LV::y = 4;
173 1.7 christos jva1.z = 5;
174 1.7 christos jva1.i = 6;
175 1.7 christos jva1.jva1 = 7;
176 1.7 christos
177 1.7 christos jva2.KV::x = 1;
178 1.7 christos jva2.KV::y = 2;
179 1.7 christos jva2.LV::x = 3;
180 1.7 christos jva2.LV::y = 4;
181 1.7 christos jva2.A2::x = 5;
182 1.7 christos jva2.A2::y = 6;
183 1.7 christos jva2.z = 7;
184 1.7 christos jva2.i = 8;
185 1.7 christos jva2.jva2 = 9;
186 1.7 christos
187 1.7 christos jva1v.x = 1;
188 1.7 christos jva1v.y = 2;
189 1.7 christos jva1v.z = 3;
190 1.7 christos jva1v.i = 4;
191 1.7 christos jva1v.jva1v = 5;
192 1.7 christos
193 1.7 christos je.A1::x = 1;
194 1.6 christos
195 1.7 christos return 0; /* set breakpoint here */
196 1.1 christos }
197