如何断言特定类的布局中没有任何vtbl指针
How to assert that a particular class does not have any vtbl pointers in its layout?
我有一个简单的RAII类来确保一些句柄得到正确处理。现在我想断言,没有人会意外地向它添加任何虚拟方法。在我看来,我需要断言这个类没有vtbl指针。
我该怎么做?是否可以在编译时断言?
编辑
我会选择桌面编译器。据我所知,没有任何桌面c++编译器不使用vtbl来实现多态性。
如果您有一个C++11库,您可以使用std::is_polymorphic<T>
:
如果T是多态类(即,声明或继承至少一个虚拟函数的类),则提供等于true的成员常数值。对于任何其他类型,value都是false。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何使用C/C++在MacOSX中获得键盘布局
- 如何在不产生任何垃圾的情况下获得C中的像素
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- C++映射有2个键,这样任何1个键都可以用来获取值
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- RtlCaptureStackBackTrace未捕获任何帧
- 布局兼容类型的并集
- Qt自定义QPush按钮未显示在布局上
- 公共和私有对对象的内存布局是否有任何影响
- LLVM 内存布局中的矢量和数组之间的任何差异
- 任何暂时停止布局重新计算的方法
- 有没有任何方法可以转储g++编译程序的类布局
- 如何断言特定类的布局中没有任何vtbl指针
- 是否有任何关于std::map存储布局的保证?
- 我们可以依赖基于内存布局和默认析构函数的任何保证吗?
- 对于stl容器是否有任何标准布局保证?
- C++ POD 结构继承?是否有任何关于派生成员的内存布局的保证