В обоих случаях вы называете это шаблоном участника.
template<typename T>
struct A {
// this is not a template
void f();
// but this is a member template
template<typename T> void g();
};
Это шаблон участника, потому что это элемент, который является шаблоном. Функция-член f
не является шаблоном, но является функцией-членом шаблона класса. В C ++, к сожалению, нет четкой терминологии для такой вещи, поэтому бывает, что определенные стандарты сформулированы в Стандарте для применения к шаблонам, но предназначены также для применения к функциям-членам шаблонов классов. И многие правила должны включать в себя все радостные комбинации, такие как
function template
member function of class template
member function of nested class of a class template
member function template
...
То же самое относится к классам-членам шаблонов классов. Было предложено вызывать функции-члены / классы шаблонов классов temploid или что-то в этом роде. В настоящее время ведется работа , чтобы исправить это положение.