Мне было интересно, может ли не виртуальная функция-член использовать параметры шаблона?IOW, должна ли функция, использующая параметры шаблона, быть виртуальной?
Пример:
template<int N>
class SomeClass
{
public:
SomeClass() {}
// Can this function be non-virtual?
int getValue() {
return N;
}
}
Если я правильно понимаю, компилятор будет генерировать один класс для каждого параметра шаблона значение .В приведенном выше примере будет неявно сгенерировано несколько классов (по одному для каждого значения N), полученных из SomeClass
.Следовательно, в моем понимании getValue()
необходимо будет отправлять динамически (в разные экземпляры функции) в зависимости от фактического (времени выполнения) типа.
Я знаю, что компилятор не предписывает выполнение этих функцийвиртуальный, но может ли он творить чудеса, или мне действительно нужно сделать функцию виртуальной, чтобы вызвать правильный экземпляр, например, через указатель?