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

《c++设计新思维》中的模板元有关问题

2012-03-04 
《c++设计新思维》中的模板元问题templateclassTList,classTstructMostDerivedtemplateclassTstructMos

《c++设计新思维》中的模板元问题
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,   Candaidate> ::Result   Result);
};

这段代买是来至本书的p63.
我想问的是这一行代码:
typedef   typename   MostDerived <Tail,   T> ::Result   Candidate;
是什么意思,我觉得Candidate   根本不能代表类型,代表类型的应该是::Head吧?望各位熟悉的朋友告诉一下。。。

[解决办法]
因为 MostDerived <Tail, T> ::Result 是一个类型 所以Candidate是一个类型
[解决办法]
MostDerived的两个特化版本都定义了Result 是一个类型
[解决办法]
MostDerived <Tail, T> ::Result类型的,呵呵^_^,okokok
[解决办法]
楼主还是再仔细看下吧,这部分是这本书模板元最密集的地方。

[解决办法]
递归,总会递归到一个实际的类型的.
[解决办法]
再多看几遍吧。loki的源码不是那么好懂的。
[解决办法]
理解模板的三把钥匙:
1. 编译期常量;
2. 递归;
3. 模板特化和偏特化

热点排行