我不认为这在C ++中是可行的,我有什么选择来模拟行为?
答案 0 :(得分:11)
将std::is_base_of
用作:
template<typename T>
class A
{
static_assert(std::is_base_of<IMyInterface, T>::value,
"T must derive from IMyInterface");
};
你也可以在功能模板中使用它。
答案 1 :(得分:6)
您可以使用std::is_base_of<YourInterface, YourParameter>
,如果结果为false
则会出错。记住这是C ++ 11。
答案 2 :(得分:3)
某些多态接口还是某些静态接口? 后者可以通过Boost Concepts进行检查。