clang emite una advertencia al compilar el siguiente código:
struct Base
{
virtual void * get(char* e);
// virtual void * get(char* e, int index);
};
struct Derived: public Base {
virtual void * get(char* e, int index);
};
La advertencia es:
warning: 'Derived::get' hides overloaded virtual function [-Woverloaded-virtual]
(la advertencia mencionada debe estar habilitada, por supuesto).
No entiendo por qué. Tenga en cuenta que descomentar la misma declaración en Base cierra la advertencia. Tengo entendido que dado que las dos funciones get () tienen firmas diferentes, no se puede ocultar.
¿Es cierto clang? ¿Por qué?
Tenga en cuenta que esto está en MacOS X, que ejecuta una versión reciente de Xcode.
clang --version
Apple LLVM version 5.0 (clang-500.1.74) (based on LLVM 3.3svn)
Actualización: mismo comportamiento con Xcode 4.6.3.
get
miembro de la función con un solo argumento en un objeto de tipo estáticoDerived
. Sin la declaración using, lo mismo conduciría a un error de compilación.