在模板<模板<class>类T1,类T2>中,是什么意思<class>?

in template<template<class> class T1, class T2>, what is the meaning of <class>?

本文关键字:lt gt class 意思 是什么 T2 T1 模板      更新时间:2023-10-16

我在A.Alexenderscu的《现代C++设计》中找到了一些模板示例
作者使用了以下行

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)
{ ... }
};

我不明白划线的意思。请解释行

在这个代码示例中,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