1// { dg-do run } 2 3// Copyright (C) 2005 Free Software Foundation, Inc. 4// Contributed by Nathan Sidwell 17 Oct 2005 <nathan@codesourcery.com> 5 6// PR 24386:Wrong virtual function called 7// Origin: Scott Snyder snyder@fnal.gov 8 9struct A 10{ 11 virtual int Foo () { return 1; } 12}; 13struct B : public A 14{ 15 virtual int Foo () { return 2; } 16}; 17 18template <class T> 19int Bar (T *a) 20{ 21 if (static_cast<A*>(a)->A::Foo () != 1) 22 return 1; 23 if (static_cast<A*>(a)->Foo () != 2) 24 return 2; 25 return 0; 26} 27 28int main () 29{ 30 return Bar (new B); 31} 32