如何断言特定类的布局中没有任何vtbl指针

How to assert that a particular class does not have any vtbl pointers in its layout?

本文关键字:布局 任何 指针 vtbl 何断言 断言      更新时间:2023-10-16

我有一个简单的RAII类来确保一些句柄得到正确处理。现在我想断言,没有人会意外地向它添加任何虚拟方法。在我看来,我需要断言这个类没有vtbl指针。

我该怎么做?是否可以在编译时断言?

编辑

我会选择桌面编译器。据我所知,没有任何桌面c++编译器不使用vtbl来实现多态性。

如果您有一个C++11库,您可以使用std::is_polymorphic<T>:

如果T是多态类(即,声明或继承至少一个虚拟函数的类),则提供等于true的成员常数值。对于任何其他类型,value都是false。