------- Comment #1 from pinskia at gcc dot gnu dot org 2007-07-30 02:19 -------
Well it is valid as B::print hides A::print.
Try doing:
#include <iostream>
class A {
public:
virtual char * print() const { return "A\n";}
virtual ~A(){};
};
class B : public A {
public:
virtual char * print() { return "B\n";}
using A::print;
virtual ~B(){};
};
int main ()
{
B b;
A & a = b;
const B &b1 = b;
std::cout << a.print() << b1.print();
}
Which shows that b1.print will call A::print. If you don't include using
A::print, then A::print wil be hidden in B.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32934