代码之家  ›  专栏  ›  技术社区  ›  pingw33n

引用指针的函数模板专门化

  •  11
  • pingw33n  · 技术社区  · 17 年前

    我有一个模板函数:

    template<typename T>
    void foo(const T& value) { bar(value); x = -1; }
    

    template<>
    void foo<char>(const char& value) { bar(value); x = 0; }
    template<>
    void foo<unsigned char>(const unsigned char& value) { bar(value); x = 1; }
    

    它工作正常。当我编译时:

    template<>
    void foo<char*>(const char*& value) { bar(value); x = 2; }
    

    我得到一个错误:

    error C2912: explicit specialization; 'void foo(const char *&)' is not a specialization of a function template
    

    有可能专门从事这方面的工作吗 char*

    2 回复  |  直到 17 年前
        1
  •  20
  •   C. K. Young    17 年前

    当然试试这个:

    template<>
    void foo<char*>(char* const& value) {...}
    

    这是因为 const char* 表示指向的指针 const char ,而不是 const 指向 char