use*_*508 2 c++ templates compile-time
我有模板功能.在模板函数中,我在模板参数上使用dynamic_cast.但由于你不能在非多态类型上使用dynamic_cast,我想在编译时检查类型是否是多态的(至少有一个虚函数),如果type不是多态的,我将跳过使用dynamic_cast.这可能吗 ?
你可以使用std::is_polymorphic:
struct Foo {};
std::cout << std::is_polymorphic<Foo>::value << std::endl;
Run Code Online (Sandbox Code Playgroud)
您可以结合使用它std::enable_if来根据其值使用不同的代码.