use*_*286 6 c++ templates template-meta-programming
我正在阅读模板元编程.我无法理解这些线是什么意思; 以下代码涉及在链表上进行元编程.
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;
Run Code Online (Sandbox Code Playgroud)
以上内容来自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.但是这里没有实际的递归类型.