我在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)
{ ... }
};
我不明白标记线的含义。请解释一下
答案 0 :(得分:2)
在此代码示例中,SmartPtr
类模板有一个类型参数T
和一个模板参数CheckingPolicy
。 CheckingPolicy
模板模板参数本身有一个类型参数: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