TypeList每个元素之间的.....
情况是这样的:
现在有一组状态集,每个状态可以相互转化。(设定状态的表示值是int,设定每两个状态值之间的差值是唯一的)
比如说有状态
A,B,C,状态值分别是(1,2,4)
目的:
得到一个TypeList,里面包含了状态之间的转化的所有情况(假设每两个状态都能互相转化).
我的实现
template<typename F,typename H=F,typename T=F>
class DTypeList
{
public:
typedef F List;
typedef TypeList<Int2Type<H::Head::value-T::Head::value>,typename DTypeList<List,H,typename T::Tail>::Result> Result;
};
template<typename F,typename T>
class DTypeList<F,T,NullType>
{
public:
typedef F List;
typedef typename DTypeList<F,typename T::Tail,F>::Result Result;
};
template<typename F,typename T>
class DTypeList<F,NullType,T>
{
public:
typedef F List;
typedef NullType Result;
};
利用一个F来保存完整的TypeList,首先取出TypeList中的第一个,和TypeList里面的每一个进行操作,当后一个TypeList是NullType的时候,我们将第一个TypeList设置成下一个,第二个TypeList为我们保存的完整的TypeList, 一直到第一个TypeList的参数是NullType,我们就产生了一个新的TypeList饱含了所有状态之间的转换的可能。
但是我觉得我的实现有点麻烦,不知道有没有更加简单的实现?
大家给点意见,先谢了。