是否可以创建一个仅在使用特定类型实例化类时才可用的函数? (不重写该类型的整个类?)
答案 0 :(得分:3)
如果我理解你所追求的是什么,一种可能性是使用包含其他函数的基类,然后有一个模板和一个专门化,它们都从该基类派生,并通过特化添加额外的函数你想:
struct X {
int x() { return 1; }
};
template<class T>
struct Y : public X {
};
template<>
struct Y<int> : public X {
int y() { return 2; }
};
int main() {
Y<long> y;
y.x();
Y<int> z;
z.y();
return 0;
}