我有一个模板函数,并希望在编译时确保它没有在特定类的子类型或超类型上实例化。如何创建一个编译时断言模板是特定类型的?
如何违反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++中有一种方法来限制模板只适用于我明确指定的派生类吗?
可能重复的[模板约束C++](http://stackoverflow.com/questions/122316/template-constraints-c ) – 2011-12-15 00:48:46
具体而言,这可能很有用:http://www.boost.org/doc/libs/1_48_0/libs/concept_check/concept_check.htm – 2011-12-15 00:50:58
为什么你不写重载? – GManNickG 2011-12-15 01:51:22