clang выдает предупреждение при компиляции следующего кода:
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);
};
Предупреждение:
warning: 'Derived::get' hides overloaded virtual function [-Woverloaded-virtual]
(указанное предупреждение должно быть включено, конечно).
Я не понимаю, почему. Обратите внимание, что раскомментирование одной и той же декларации в Base отключает предупреждение. Я понимаю, что поскольку две функции get() имеют разные подписи, не может быть скрытия.
Правильно ли это? Почему?
Обратите внимание, что это на MacOS X, запущенном последней версией Xcode.
clang --version
Apple LLVM version 5.0 (clang-500.1.74) (based on LLVM 3.3svn)
Обновление: такое же поведение с Xcode 4.6.3.