summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.pt/vbase1.C
blob: ddffa93d37d019cbcf34949bba1d025e633328d6 (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
// { dg-do run  }
// Check that template classes handle inherited virtual bases
// properly, initializing them before direct non-virtual bases.

extern "C" void exit (int);

int aflag;

struct A
{
  A() { aflag = 1; }
};

struct B : virtual public A 
{
  B() { }
};

struct C
{
  C() { if (!aflag) exit (1); }
};

template<class Parent>
struct D : public C, public Parent
{
  D() { }
};

int
main ()
{
  D<B> c;
}