小编ltu*_*tux的帖子

通过引用const char*传递字符串文字无法使用g ++ 4.6.3进行编译

这是C++ Primer第4版第16章的一个例子,它是关于模板专业化的.

#include <iostream>
#include <string>
#include <cstring>
using namespace std;

template <class T>
int compare(const T& v1, const T& v2) {
    if(v1<v2) return -1;
    if(v2<v1) return 1;
    return 0;
}

template <>
int compare<const char*>(const char* const &v1, const char* const &v2){
    return strcmp(v1,v2);
}

int main(int argc, const char *argv[])
{
    cout << compare("abc","defg") << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望compare("abc","defg")能够调用模板的专用版本.但事实是,g ++ 4.6.3将无法编译此代码并给出以下错误:

错误:没有匹配函数来调用'compare(const char [4],const char [5])'

注意:候选者是:template int compare(const T&,const T&) …

c++ templates pointers

6
推荐指数
1
解决办法
3762
查看次数

标签 统计

c++ ×1

pointers ×1

templates ×1