<>3.12节一段代码不懂.谁帮忙看看呀?
cunsh 2006-04-20 01:31:53 这里有两个模板:
MostDerived和DerivedToFront
MostDerived得到一个类T在一个Typelist中的最终派生类.
DerivedToFront将一个Typelist中的派生类放在基类之前.
代码如下:
//MostDerived
template <class TList, class T> struct MostDerived;
template <class T>
struct MostDerived<NullType, T> {
typedef T Result;
};
template <class Head, class Tail, class T>
struct MostDerived<Typelist<Head, Tail>, T> {
private:
typedef typename MostDerived<Tail, T>::Result Candidate;
public:
typedef typename Select< SUPERSUBCLASS(Candidate, Head),
Head, Candidate>::Result Result;
};
//然后用MostDerived来实现DerivedToFront:
template<class T>struct DerivedToFront;
typelate<> struct DerivedToFront<NulType> {
typedef NullType Result;
};
typedef <class Head , class Tail>
struct DerivedToFront<Typelist<Head, Tail> > {
private:
typedef typename MostDerived<Tail, Head>::Result TheMostDerived;
typedef typename Replace<Tail, TheMostDerived, Head>::Result L;
public:
typedef Typelist<TheMostDerived, L> Result; //这里的Result是什么?如何工作的?.
};
其中的DerivedToFront是怎么工作的没看懂.谁给讲讲呀?