特定类型的模板函数的专用化
Specialization of a template function for a specific type
请考虑此函数模板返回两个类型值的最大值:
template<typename T>
T max(T a, T b)
{
return a ? a > b : b;
}
是否可以像对待类一样为用户定义的类型定义单独的行为? 可能看起来像这样的东西?
template<>
Entity max<Entity>(const Entity a, const Entity b)
{
std::cout << "this is an entity" << std::endl;
return a ? a > b : b;
}
PS:在这种情况下,我重载了实体的const char*
运算符以返回实体的名称和用于比较的operator>
。
提前谢谢。
你的代码有一些问题。我已经在下面的示例代码中修复了它们:
struct Entity
{
bool operator >(const Entity & other)
{
return x > other.x;
}
int x = 0;
};
template<typename T>
T max(T a, T b)
{
return a > b ? a : b;
}
template<>
Entity max(Entity a, Entity b)
{
std::cout << "this is an entity" << std::endl;
return a > b ? a : b;
}
int main()
{
Entity e1;
Entity e2;
e1.x = 12;
e2.x = 13;
Entity max_en = max(e1, e2);
}
相关文章:
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- 使用 C++20 概念模板函数专用化时的依赖项
- 将 c++ 类成员函数专用于模板类
- 使用模板模板参数进行模板定义的函数专用化
- 返回值的简单模板类成员函数专用化
- 已专用类的成员函数专用化
- 部分模板函数专用化enable_if:默认实现
- 使用数组参数进行函数专用化
- 模板函数专用化的内部编译器错误
- 在子类中定义可变参数函数专用化
- 使用模板的构造函数专用化
- 模板函数专用化Enable_if
- 如何将模板构造函数专用化移动到 cpp 文件
- 模板类模板构造函数专用化
- 模板类是否可以用作模板函数专用化的参数
- 未调用数组的函数专用化
- 如何将模板成员函数专用化为另一个模板类
- 模板类的模板函数专用化
- 参数值的自动模板函数专用化
- 如何在类中使用成员函数专用化