c – 什么是struct NIL {typedef NIL Head; }?

我正在阅读模板元编程.我无法理解这些线是什么意思;以下代码涉及在链表上进行元编程.
struct NIL {
typedef NIL Head;
typedef NIL Tail;
};

template <typename H,typename T=NIL> struct Lst {
    typedef H Head;
    typedef T Tail;
};

template <int N> struct Int{ static const int result = N; };
typedef Lst< Int<1>,Lst< Int<2>,Lst< Int<3> > > > OneTwoThree;

以上是https://monoinfinito.wordpress.com/series/introduction-to-c-template-metaprogramming/.
我非常感谢有关struct NIL具有什么意义的指导,它具有typedef NIL Head和typedef NIL Tail. Nil是一种类型,当然,但是如果我有typedef NIL Head,例如,这是否意味着我在每个头部都有另一个递归的头部和尾部?

解决方法

不,typedef NIL Head;并不意味着每个NIL中都有一个NIL.

它只是意味着NIL :: Head是NIL的另一个名称.同样适用于NIL :: Tail.

这意味着你可以递归地编写类型,例如NIL :: Head :: Tail :: Tail :: Tail :: Head :: Head也是NIL的名称.但是这里没有实际的递归类型.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...