0

そのため、テンプレートの特殊化の使用方法を理解しようとしていましたが、予期しないコンパイラ エラーが発生しました。構文をチェックすればするほど、正しいように見えるので、明らかに何かが欠けています。私がやろうとしているのは、特殊化された 2 つの関数テンプレートを作成し、それらをオーバーロードされた関数と比較することだけです。私が得るエラーは次のとおりです'OverloadedFunk' could not be resolved。28行目と35行目です。これが私がロックしようとしているコードです:

#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;
}

ここで私は正確に何を間違っていますか?代わりにオーバーロードされた関数を使用できることはわかっていますが、特殊化とオーバーロードされた関数の違いをテストしようとしているため、この場合は役に立ちません。すべてのヘルプは大歓迎です。

4

1 に答える 1

3

プライマリ関数テンプレートは という名前OverLoadedFunkですが、特殊化は名前が付けられていますOverloadedFunk– C++ では大文字と小文字が区別されます!

于 2012-04-20T23:17:36.010 に答える