我有一个模板函数(为简化起见,我们称之为“add”)
template<typename T>
inline T add(const T a, const T b)
{
return a+b;
}
我可以为特定类型进行专门化,但我想专门化模板类型。在我的情况下,我的模板类型称为Vec2 。它是一个二维三角向量(以x和y为例,而不是c ++向量!)我想要做的是为通用情况下的Vec2 专门化我的add函数,而不必为每种可能使用Vec2的类型进行专门化。Vec2 来自的库具有double的typedefs V2d,float的typedefs V2f和int的typedefs V2i。我可以使用以下内容为每个类型进行专门化:
template<>
inline V2f add<V2f>(const V2f a, const V2f b)
{
return V2f(a.x + b.x, a.y + b.y);
}
然而,我想做的是让自己能够做到以下事情,这也是我遇到困难的地方:
template<typename S>
inline Vec2<S> add<Vec2<S> >(const Vec2<S> a, const Vec2<S> b)
{
return Vec2<S>(a.x + b.x, a.y + b.y);
}
我觉得一定有方法可以做到这一点,但我找不到正确的语法。