首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

loki库里新的typelist的实现没看懂,该怎么解决

2012-03-22 
loki库里新的typelist的实现没看懂C/C++ codetemplatetypename T1 NullType, typename T2 NullType, ty

loki库里新的typelist的实现没看懂

C/C++ code
template        <            typename T1  = NullType, typename T2  = NullType, typename T3  = NullType,            typename T4  = NullType, typename T5  = NullType, typename T6  = NullType,            typename T7  = NullType, typename T8  = NullType, typename T9  = NullType,            typename T10 = NullType, typename T11 = NullType, typename T12 = NullType,            typename T13 = NullType, typename T14 = NullType, typename T15 = NullType,            typename T16 = NullType, typename T17 = NullType, typename T18 = NullType        >         struct MakeTypelist        {        private:            typedef typename MakeTypelist            <                T2 , T3 , T4 ,                 T5 , T6 , T7 ,                 T8 , T9 , T10,                 T11, T12, T13,                T14, T15, T16,                 T17, T18            >            ::Result TailResult;        public:            typedef Typelist<T1, TailResult> Result;        };        template<>        struct MakeTypelist<>        {            typedef NullType Result;        };


  这是较新的做法,我就没看懂,那个特化代表什么意思,什么情况下才会发生特化类型为空的<>,照理说后面应该发生17个nullType作为参数的MakeTypelist版本,而这个又是怎样对应到
  template<>
  struct MakeTypelist<>
  这个特化版本的呢


nullType的声明很简单,就是
class nullType{
};

[解决办法]
C/C++ code
#include<iostream>using namespace std;template<int x> struct test{             enum add{ num=x+test<x-1>::num};             };template<>struct test<0>{                 enum add{num=0};                 };                 int main(){   int a= test<10>::num;   cout<<a<<endl;  system("pause");  return 0;} 

热点排行