为什么我的专用模板函数'OverloadedFunk'在C ++中给出“无法解决”错误?

时间:2012-04-20 23:14:23

标签: c++ templates template-specialization

所以我一直试图弄清楚如何使用模板特化,但遇到意外的编译器错误。我检查语法越多,它看起来越正确,所以我很遗憾。我要做的就是创建两个专门的函数模板,并将它们与重载函数进行比较。我得到的错误如下:第28和35行的'OverloadedFunk' could not be resolved。这是我试图摇滚的代码:

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

我到底错在了什么?我知道我可以使用重载函数,但我正在尝试测试特化和重载函数之间的区别,以便在这种情况下无法帮助我。非常感谢所有帮助。

1 个答案:

答案 0 :(得分:3)

您的主要功能模板名为OverLoadedFunk,但您的专业名称为OverloadedFunk - C ++区分大小写!