如何强制使用的模板参数在C++中实现某些接口?

dch*_*tri 4 c++ templates interface

我不认为这在C++中是可能的,我有什么选择来模拟行为?

Naw*_*waz 11

使用std::is_base_of如:

template<typename T>
class A
{
    static_assert(std::is_base_of<IMyInterface, T>::value, 
                  "T must derive from IMyInterface");
};
Run Code Online (Sandbox Code Playgroud)

您也可以在功能模板中使用相同的功能.


Syn*_*xis 6

std::is_base_of<YourInterface, YourParameter>如果结果是,您可以使用并发出错误false.记住这是C++ 11.