Использование псевдонима типа в шаблоне с тем же типом, что и сам шаблонный класс - PullRequest
0 голосов
/ 24 февраля 2019

Я не понимаю какой-то код в singly_linked.hpp :

template <class T>
struct singly_linked {
  // -- member types -----------------------------------------------------------

  /// The type for dummy nodes in singly linked lists.
  using node_type = singly_linked<T>;  // exactly type of node_type???

  /// Type of the pointer connecting two singly linked nodes.
  using node_pointer = node_type*;

  // -- constructors, destructors, and assignment operators --------------------

  singly_linked(node_pointer n = nullptr) : next(n) {
    // nop
  }

  // -- member variables -------------------------------------------------------

  /// Intrusive pointer to the next element.
  node_pointer next;
};

что именно является типом node_type?Это вызывает бесконечный цикл?Например, если у меня есть:

singly_linked<int> node;

, то какой тип singly_linked<int>::node_type?

1 Ответ

0 голосов
/ 24 февраля 2019

Вы неправильно поняли значение using node_type = singly_linked<T>;.Он не объявляет переменную типа singly_linked<T> (которая действительно приведет к бесконечной рекурсии и вызовет ошибку компилятора).Вместо этого это вводит псевдоним для этого типа: singly_linked<T>.

Таким образом, спрашивать о типе singly_linked<int>::node_type не имеет смысла, так как это сам тип.

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