c++: further optimize tsubst_template_decl
[official-gcc.git] / libvtv / testsuite / libvtv.cc / virtual_inheritance.cc
blob1c49c966453bf4cb980dc82d12ee9ec0ed41f675
1 // { dg-do run }
3 #include <assert.h>
4 struct V {
5 V(): virtual_value(-123) {}
6 int virtual_value;
7 virtual int access_vv() { return virtual_value; }
8 };
10 struct A: virtual public V {
11 A():value(123) {}
12 int value;
13 virtual int access() { return value; }
15 struct B: virtual public V {
16 B():value(456) {}
17 int value;
18 virtual int access() { return value; }
20 struct C : public A, public B {
21 C():better_value(789) {}
22 int better_value;
23 virtual int access() { return better_value; }
25 struct D: public A, public B {
26 D():better_virtual_value(-345) {}
27 int better_virtual_value;
28 virtual int access_vv() { return better_virtual_value; }
31 int use(B *b)
33 return b->access();
36 int v_use(V * v)
38 return v->access_vv();
41 int main()
43 C c;
44 assert(v_use(&c) == -123);
45 D d;
46 assert(v_use(&d) == -345);
47 return 0;