diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/rtti/dyncast2.C')
-rw-r--r-- | gcc/testsuite/g++.dg/rtti/dyncast2.C | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/rtti/dyncast2.C b/gcc/testsuite/g++.dg/rtti/dyncast2.C new file mode 100644 index 000000000..2e4f61596 --- /dev/null +++ b/gcc/testsuite/g++.dg/rtti/dyncast2.C @@ -0,0 +1,31 @@ +// PR c++/34364 +// { dg-do run } + +struct A +{ + virtual ~A () {} +}; + +struct B : public A +{ + template <typename T> struct C + { + static void f (A &a) + { + dynamic_cast <B &>(a).g (); + } + }; + + B () : c (6) {} + void g () { c++; } + int c; +}; + +B b; + +int +main (void) +{ + B::C<int>::f (b); + return b.c != 7; +} |