我不了解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
是什么类型?
答案 0 :(得分:1)
您误解了using node_type = singly_linked<T>;
的含义。它没有声明类型singly_linked<T>
的变量(这确实会导致无限递归并会导致编译器错误)。而是为此类型引入了一个别名:singly_linked<T>
。
因此,询问singly_linked<int>::node_type
的类型是没有意义的,因为它本身就是类型。