// { dg-do run } // Copyright (C) 2005 Free Software Foundation, Inc. // Contributed by Nathan Sidwell 17 Oct 2005 // PR 24386:Wrong virtual function called // Origin: Scott Snyder snyder@fnal.gov struct A { virtual int Foo () { return 1; } }; struct B : public A { virtual int Foo () { return 2; } }; template int Bar (T *a) { if (static_cast(a)->A::Foo () != 1) return 1; if (static_cast(a)->Foo () != 2) return 2; return 0; } int main () { return Bar (new B); }