我有一個模板函數(爲簡化起見,我們把它稱爲「加」)部分專業函數模板
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