可能重复:
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 ++吗?如果是,那么这种专业化的名称是什么?
答案 0 :(得分:0)
这是标准的c ++。 这是模板特化。在你专门研究一个方法的情况下,它被称为部分模板专业化 另外,请查看here
答案 1 :(得分:0)
这是显式特化的示例。如果仍有模板参数(但少于最初),则部分特化。