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;}