Что такое шаблоны участников? - PullRequest
1 голос
/ 16 октября 2011

Могу ли я вызвать шаблон элемента, функцию шаблона шаблона? или как я могу назвать его шаблоном-членом и как это имеет смысл?

Например:

Для случая A: у меня есть класс, если я сделаю его функцию-член функцией-членом шаблона, я бы назвал ее шаблоном-членом?

Для случая B: у меня есть шаблонный класс. Если я сделаю его функцию-член шаблона шаблоном, я бы назвал его шаблоном-членом или я могу назвать его функцией-членом шаблона?

1 Ответ

7 голосов
/ 16 октября 2011

В обоих случаях вы называете это шаблоном участника.

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 или что-то в этом роде. В настоящее время ведется работа , чтобы исправить это положение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...