template
В чём разница между 2 функциями?
Ответ
Разницы, как таковой, нет. Просто в одном случае шаблонный класс явно параметризован типом T, а в другом - неявно. В этом можно убедиться на соответствующем примере:
template
int main()
{
A
При компиляции будет выведена ошибка:
error: class member cannot be redeclared
Т.е. компилятор посчитал функции идентичными.
При этом использование краткого имени в данном случае предпочтительнее, т.к. не зависит от изменения имени шаблонного параметра или их кол-ва.
В Стандарте языка данный момент описан в п.14.6.1/1
Like normal (non-template) classes, class templates have an injected-class-name (Clause 9). [...] is equivalent
to the template-name followed by the template-parameters of the class template enclosed in <>.
Комментариев нет:
Отправить комментарий