特定の型のすべてのテンプレート化された値に対してテンプレート関数を特殊化しようとしています。以下は私が山車のベクトル2のために機能を特化することができます特定のテンプレート型の関数テンプレートの特殊化
template <class T>
std::string toString(const T& t);
:私は、次の機能を持っている
template <>
std::string toString<Vector2<float>>(const Vector2<float>& v);
が、私はベクトル2のすべてのタイプに特化する機能をしたいと思います。そのよう
template <class T>
std::string toString(const Vector2<T>& v);
が、のtoString()を呼び出す機能::私はこのような何かを試してみました
Vector2<float> vec;
toString(vec);
最初の関数が呼び出されます。どうすればこれを達成できますか?
EDIT:
私は重要なディテールを残したかもしれない、私は実際にそうように関数を呼び出しました:
toString<Vector2<float>>(vec)
私はそれが違いを作ったと思いますが、明らかにしませんでした私がそれを使わないで電話すると
<Vector2<float>>
がうまくいったからです。なぜこれが望ましくない機能を呼び出すのでしょうか?あなたの時間を無駄にして、ご協力いただきありがとうございます。
(http://coliru.stacked-crooked.com/a/7368da00a62395b2)[再現することはできません]。注:あなたは 'toString'をオーバーロードしています。それはそれを特化していません。正しい方法です。これはうまくいくはずです。 – Quentin
@Quentin彼は、彼が機能を部分的に特化したいと思う。あなたが知っているように、それは不可能であり、したがって実際の過負荷のため予期しない動作が起こります。明確化が必要です。 – skypjack
が問題を発見し、質問を更新しました... –