Using Declarations
A using declaration can bring any hidden public or
protected base class member into the scope of the derived
class.
These members act as overloaded members of the derived
class.
However, such members remain hidden in situations where
the argument list is the same as the same named member in
the derived class.
In the following example, the using declaration makes the
function taking the double accessible to clients of the
derived class. But, the function taking the int is still hidden
in the derived class by declaring a derived class member
function that has the same signature.