在模板<template <class>类T1,类T2&gt;中,<class>是什么意思?</class> </template <class>

时间:2014-04-16 11:24:38

标签: c++ templates

我在A.Alexenderscu的Modern C ++ Design中找到了一些模板示例 作者使用以下行

template
<
class T,
template <class> class CheckingPolicy  // <---- Please explain this line
>
class SmartPtr : public CheckingPolicy<T>
{
...
template
<
class T1,
template <class> class CP1,
>
SmartPtr(const SmartPtr<T1, CP1>& other)
    : pointee_(other.pointee_), CheckingPolicy<T>(other)
{ ... }
};

我不明白标记线的含义。请解释一下

1 个答案:

答案 0 :(得分:2)

在此代码示例中,SmartPtr类模板有一个类型参数T和一个模板参数CheckingPolicyCheckingPolicy模板模板参数本身有一个类型参数:template <class> class CheckingPolicy。我建议您按以下方式格式化模板代码,以使其更易于理解:

template
    <
        class T, // type parameter of a SmartPtr class template
        template
            <
                class // type parameter of a template parameter CheckingPolicy
            >
        class CheckingPolicy // template parameter of a SmartPtr class template
    >
class SmartPtr // class template