blob: f5abf2cf9b940b32aa8ad0c95579cf96a8dc56bb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
// PR c++/70393
// { dg-do run { target c++11 } }
/* 'ab' has a static initializer, but we flubbed the initializer,
because of B being the primary base. */
struct A
{
int a = 1;
};
struct B
{
B *element = (B*)2;
virtual int vfunc() = 0;
int call_element()
{
return element->vfunc();
}
void set_element()
{
element = this;
}
};
struct AB : public A, public B
{
int vfunc()
{
return 0;
}
};
static AB ab;
int main()
{
if (ab.a != 1)
return 1;
if (ab.element != (void*)2)
return 2;
ab.set_element();
return ab.call_element();
}
|