可以在泛型类中使用一种类型的函数吗?

时间:2012-04-09 22:58:03

标签: c++ generics

是否可以创建一个仅在使用特定类型实例化类时才可用的函数? (不重写该类型的整个类?)

1 个答案:

答案 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;
}