功能专业化

Function Specialization

本文关键字:专业化 功能      更新时间:2023-10-16

我试图弄清楚这两者之间的区别。

第一个是用于添加到表达式的模板函数:

template <class T,class Y,class Z>
Z add(T t,Y y)
{
  return t+y;
}

Specialization_1 :

template<>
int add<int,int,int>(int t,int y)
{
    return t+y+10000;
}

Specialization_2 :

int add(int t,int y)
{
    return t+y+10000;
}

speciaization_1和specialization_2有什么区别?在声明之前是否有必要使用模板<>????

第一个是专业化。 二是重载。

第一个将创建模板的特殊变体。 第二个将创建另一个具有相同名称的函数

我没有看到对你的第一个专业感兴趣。 例如,这更有用:

template <typename T>
T add(T t,T y)
{
  return t+y+10000;
}

现在您可以使用此功能添加许多不同的类型。