OSDN Git Service

cp:
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / template / overload7.C
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
9 struct A
10 {
11   virtual int Foo () { return 1; }
12 };
13 struct B : public A
14 {
15   virtual int Foo () { return 2; }
16 };
17
18 template <class T>
19 int 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
28 int main ()
29 {
30   return Bar (new B);
31 }