1
の明示的な特殊化は、我々は次のクラステンプレートがあるとします。クラステンプレートや機能
template<typename T, size_t m, size_t n>
class Matrix {
/* Implementation/Declaration is probably irrelevant and has been omitted. */
};
私はテンプレートクラスのための特定の機能を特化したいです。
template<> template<typename T, size_t m, size_t n>
inline std::wstring Microsoft::VisualStudio:CppUnitTestFramework::ToString(const Matrix<T, m, n> &mtrx) {
/* Definition omitted */
}
(そして、はい、私は専門てる機能を見つけるのはそれほど難しいことではありません実際の関数である。)
私は上記のコードはまだ、間違っている理由として理由を見ませんコンパイルするとき(あなたが尋ねる前に、適切なファイルが含まれている、)私は、次の(非常に助けにならない)エラーメッセージが表示されます。
C2244: 'ToString': unable to match function definition to an existing declaration
人々は必然的にそれを聞いてきますので、私は同様の機能のためのプロトタイプが含まれる場合があります私は'm specializing:
template <typename Q> static std::wstring ToString (const Q& q);
そして、私はテンプレート引数のないクラス(例:std :: string)に特化しても問題ありません。
'テンプレート<>'部分を取り除く。 –
私はすでにそれを試みました。うまく行かなかった。 (まったく同じエラーメッセージです。) – Isaiah
名前空間内で最初に宣言しましたか? –