私はどのようにテンプレートの特殊化を使用するかを考えていましたが、予期しないコンパイラエラーが発生しました。文法を確認するほど、見た目が正しく見えるので、私は何かが欠けています。私がしようとしているのは、特殊化された2つの関数テンプレートを作成し、それらを過負荷関数と比較することです。次のように私が手にエラーがある:私の特殊なテンプレート関数 'OverloadedFunk'がC++で「解決できませんでした」というエラーを表示するのはなぜですか?
#include <iostream>
using namespace std;
enum ErrorCode {
ERROR_NONE = 0, ///< No errors
SOME_FAILURE_01,
SOME_FAILURE_02,
INVALID_STATUS,
ERROR_UNKNOWN,
};
template<typename _to, typename _from>
inline int OverLoadedFunk(_from const &arg, _to &dest)
{
cout << "OverLoadedFunk3 - Template to from";
return 0;
}
template<>
inline int OverloadedFunk(const int &from, std::string &dest) //Line 28
{
cout << "OverloadedFunk1 - int to string";
return 0;
}
template<>
inline int OverloadedFunk(const ErrorCode &from, std::string &dest) //Line 35
{
cout << "OverloadedFunk2 - enumeration to string";
return 0;
}
int main() {
std::string localDest = "test";
int localFrom = 1234;
OverloadedFunk(localFrom, localDest);
return 0;
}
は、私がここで間違って正確に何をしています:?ここではライン28及び35上の'OverloadedFunk' could not be resolved
は、私が岩にしようとしたコードですか私は、代わりにオーバーロードされた関数を使用することができます知っているが、私は専門化とオーバーロードされた関数の違いをテストしようとしているので、この場合私を助けません。すべての援助は非常に高く評価されます。
テンプレートパラメータの順序は、関数パラメータの逆であることを指摘する価値があります。 vs(from、to) - エラーではなく、混乱を招く可能性があります。 –
Fraser
doh! (手のひらスラップ) ありがとうildjarn。 – Drellgor