在比较运算符中:
template<class R1, class R2>
bool operator==(Manager<R1> m1, Manager<R2> m2) {
return m1.internal_field == m2.internal_field;
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以强制R1和R2必须有超类型或子类型关系?也就是说,我想允许R1从R2派生,或者R2从R1派生,但如果R1和R2是不相关的类型,则不允许比较.
事实证明,我原本想要的可能不可能不涉及C++ 11我想稍微改变一下要求并问你是否可以实现这一点.
基本上我想在一个类继承自"interface"时检查编译时间.通过接口我的意思是仅使用纯虚方法的类.我想做以下代码:
template <typename T>
class Impl : public T {
public:
STATIC_ASSERT_INTERFACE(T);
};
Run Code Online (Sandbox Code Playgroud)
这里的行为是,如果T只有纯虚方法,那么它将编译,如果其中一个方法不是那么失败.
任何人都可以想到这样的事情吗?