c ++ przeciążone ostrzeżenie funkcji wirtualnej przez clang?
clang emituje ostrzeżenie podczas kompilowania następującego kodu:
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);
};
Ostrzeżenie to:
warning: 'Derived::get' hides overloaded virtual function [-Woverloaded-virtual]
(wspomniane ostrzeżenie musi być oczywiście włączone).
Nie rozumiem dlaczego. Zauważ, że odkomentowanie tej samej deklaracji w Base powoduje zamknięcie ostrzeżenia. Rozumiem, że skoro dwie funkcje get () mają różne sygnatury, nie można ukryć.
Czy clang jest w porządku? Czemu?
Zauważ, że jest to na MacOS X, z najnowszą wersją Xcode.
clang --version
Apple LLVM version 5.0 (clang-500.1.74) (based on LLVM 3.3svn)
Aktualizacja: to samo zachowanie z Xcode 4.6.3.