class A {
public:
template<typename T> void func(size_t n, T values[]) { ... }
};
class B : public A {
public:
void func(size_t n, uint32_t values[]) { ... }
};
Почему функция B::func()
не имеют приоритет над шаблоном функции A::func()
при вызове этого кода?Шаблон над методом нешаблонном в производном классе
uint32_t values[5];
A* obj = new B();
obj->func(5, values);
Поскольку правила разрешения перегрузки выбирают наиболее одинаковое совпадение по типу и наиболее конкретное (в данном случае не шаблонное). – 9dan
Некоторые указатели от Herb Sutter http://gotw.ca/gotw/049.htm – DumbCoder
Был ли ** не ** предназначен для автора? – peoro