我有一个模板函数(为简化起见,我们把它称为“加”)部分专业函数模板
template<typename T>
inline T add(const T a, const T b)
{
return a+b;
}
我可以专注它对于某些类型的,但我” D喜欢做的是专门为模板类型。
在我的情况下,我的模板类型被称为Vec2<T>
。这是一个2维三角载体(如X & Y,而不是C++矢量!)
我希望做的是专注我add
功能的Vec2<T>
一般情况下,而不是有专门为每个键入Vec2
可能会使用。
Vec2<T>
来自的库有V2d
(double),V2f
(float)和V2i
(int)的typedef。
我可以专门为每个这些使用类似:
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);
}
我觉得必须有这样做的方式,但我努力寻找它的正确语法。
接受的答案可能是你的兴趣http://stackoverflow.com/questions/39250545/sfinae-到化妆基础模板总是对结果的错误 – StoryTeller