diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.pt/vbase1.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/vbase1.C | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/vbase1.C b/gcc/testsuite/g++.old-deja/g++.pt/vbase1.C new file mode 100644 index 000000000..ddffa93d3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/vbase1.C @@ -0,0 +1,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; +} |