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.
get
функцию-член с одним аргументом для объекта статического типаDerived
. Без объявления using то же самое привело бы к ошибке компиляции.