【问题标题】:Template specialization of a method [duplicate]方法的模板特化[重复]
【发布时间】:2012-02-24 22:44:11
【问题描述】:

可能重复:
template class member function only specialization
If I want to specialise just one method in a template, how do I do it?

今天一位同事向我展示了这种形式的专业化(使用 GCC 编译):

#include <iostream>
#include <sstream>

template<typename T>
struct Item {
    Item(const T & value) : value(value) {}

    std::string toString() const {
        std::stringstream ss;
        ss << value;
        return ss.str();
    }

    T value;
};


template<>
std::string Item<char>::toString() const {
    return "I am a character.";
}


int main() {
    Item<int> i(1);
    std::cout << "i: " << i.toString() << std::endl;

    Item<char> c('c');
    std::cout << "c: " << c.toString() << std::endl;
}

我一直认为只有类专业化(全部或部分)和函数专业化。

以上是标准的C++吗?如果是,那么这种专精的名称是什么?

更新

Looks like this question has been answered before.

【问题讨论】:

    标签: c++ templates


    【解决方案1】:

    这是标准的 C++。 这就是模板特化。如果您只是特化一个方法,则称为部分模板特化。
    另外,看here

    【讨论】:

      【解决方案2】:

      这是一个显式特化的例子。如果仍有模板参数(但比原来少),那将是部分特化

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-24
        • 2012-08-13
        • 2010-12-15
        相关资源
        最近更新 更多