【发布时间】:2012-01-20 18:35:07
【问题描述】:
我有一个模板函数,并希望在编译时确保它不会在特定类的子类型或超类型上实例化。
如果违反这一点,我怎么会导致 C++ 编译器错误?
class base {
};
class derived : public base {
};
class lowest : public derived {
};
template <typename T>
bool isCorrect(const T& obj) {
typedef foo<T> D;
foo<T> *def = foo<T>::find();
return (def && def->getAnswer(object));
}
我希望 isCorrect 仅适用于 derived 类,但不适用于 base 或 lowest。请注意,可能还有许多其他最低类和要排除的基类字符串以及可接受的替代派生类。
C++ 中有没有办法将模板限制为仅适用于我明确指定的派生类?
【问题讨论】:
-
Template Constraints C++ 的可能重复项
-
为什么不直接写重载?
-
@GMan 有很多子类型,所以列表会很长,所以我正在寻找方法来积极声明可接受的类型。
标签: c++ templates compiler-errors