c++ - 模板 <typename T> 和模板 <class T> 有什么区别。对我来说,两者都产生相同的结果

标签 c++ templates

template <typename T> 和有什么区别?和 template <class T> . 对我来说,两者都产生了相同的结果。

例如

template <class T>
T Average(T *atArray, int nNumValues)
{
    T tSum = 0;
    for (int nCount=0; nCount < nNumValues; nCount++)
        tSum += atArray[nCount];

    tSum /= nNumValues;
    return tSum;
}

如果我将其更改为 template <typename T>一样的

最佳答案

没有区别。 typenameclass 在类型模板参数的声明中可以互换。

但是,在声明模板模板参数时,您必须使用 class(而不是 typename):

template <template <typename> class    T> class C { }; // valid!
template <template <typename> typename T> class C { }; // invalid!  o noez!

关于c++ - 模板 <typename T> 和模板 <class T> 有什么区别。对我来说,两者都产生相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5307036/

相关文章:

c++ - 模板模板参数和 clang

c++ - 带有数据指针的可变参数模板

c# - P/Invoke 在 C# 和非托管 DLL 之间编码和解码二维数组、结构和指针

c++ - Qt SLOT 宏用作函数参数

c++ - 从 makefile 定义宏函数

c++ - rand() 总是在应用程序重启时返回相同的序列

c++ - 为在 vector 中调用模板初始化的模板类创建构造函数

c++ - 创建模板内部 lambda 函数?

c++ - 如何使用访问者从变体返回特定类型?

c++ - template-parameter-list of template parameter 是什么意思