------- Comment #1 from pinskia at gcc dot gnu dot org 2005-11-16 15:17 -------
First this has nothing to do with templates, you can reproduce the error
message without templates.
Second this is how C++ works.
doit(double) in B<T> hides doit(void) in A as it is the same name.
The way to fix it would either to do:
b->A::doit() ;
or:
Change defintion of B to include a using statement like:
template <typename T>
class B: public A {
public:
virtual void doit(double) {}
using A::doit;
} ;
This makes both doit visible in B<T>. In fact you will have the same issue
trying to call doit(double) in C, you solve it the same way.
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |INVALID
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24893