c – 什么是struct NIL {typedef NIL Head; }?
发布时间:2020-12-16 03:44:24 所属栏目:百科 来源:网络整理
导读:我正在阅读模板元编程.我无法理解这些线是什么意思;以下代码涉及在链表上进行元编程. 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{ sta
我正在阅读模板元编程.我无法理解这些线是什么意思;以下代码涉及在链表上进行元编程.
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/. 解决方法
不,typedef NIL Head;并不意味着每个NIL中都有一个NIL.
它只是意味着NIL :: Head是NIL的另一个名称.同样适用于NIL :: Tail. 这意味着你可以递归地编写类型,例如NIL :: Head :: Tail :: Tail :: Tail :: Head :: Head也是NIL的名称.但是这里没有实际的递归类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |