C++ 为特定类型专门化模板函数
考虑此函数模板最多返回两个类型值:C++ 为特定类型专门化模板函数,c++,templates,C++,Templates,考虑此函数模板最多返回两个类型值: template<typename T> T max(T a, T b) { return a ? a > b : b; } 模板 T最大值(T a,T b) { 返回a?a>b:b; } 是否可以像对类一样为用户定义的类型定义单独的行为?看起来像这样的东西 template<> Entity max<Entity>(const Entity a, const Entity b) { std::co
template<typename T>
T max(T a, T b)
{
return a ? a > b : b;
}
模板
T最大值(T a,T b)
{
返回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;
}
模板
实体最大值(常量实体a、常量实体b)
{
std::cout
用于比较
提前感谢。您的代码有一些问题。我已在下面的示例代码中修复了这些问题:
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);
}
struct实体
{
布尔运算符>(常量实体和其他)
{
返回x>other.x;
}
int x=0;
};
模板
T最大值(T a,T b)
{
返回a>b?a:b;
}
模板
实体最大值(实体a、实体b)
{
std::不能专门化。只是过载。@Alex你为什么要复制所有东西?