【发布时间】:2016-11-14 09:59:37
【问题描述】:
我有一个模板函数(为了简单起见,我们称它为“add”)
template<typename T>
inline T add(const T a, const T b)
{
return a+b;
}
我可以将它专门用于某些类型,但我想做的是专门用于模板类型。
就我而言,我的模板类型称为Vec2<T>。它是一个二维三角向量(如 x & y,而不是 c++ 向量!)
我想做的是将我的add 函数专门用于Vec2<T> 的一般情况,而不是专门针对Vec2 可能使用的每种类型。
Vec2<T> 来自的库具有V2d(双精度)、V2f(浮点)和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);
}
我觉得必须有一种方法可以做到这一点,但我正在努力寻找合适的语法。
【问题讨论】:
-
接受的答案可能会引起您的兴趣stackoverflow.com/questions/39250545/…
标签: c++ templates template-specialization partial-specialization