【发布时间】:2021-11-13 05:46:35
【问题描述】:
是否可以在编译时计算继承层次结构中虚拟基的字节偏移量?
例子-
class A {};
class B : public virtual A {};
class C : public virtual A {};
class D : public virtual B, public virtual C {};
我想计算 B、C 和 D w.r.t 实例的字节偏移量。 A 在编译时,即不使用任何这些类的任何真实实例。
从我目前在网上阅读的内容来看,编译器在虚拟表的帮助下实现逻辑(由 static_cast 和 dynamic_cast 使用),并且由于这些类中没有任何一个 true 实例,因此没有要搭载的虚拟表。但希望有一些模板魔法可以使这项工作。
目的 - 我试图让这个 Custom RTTI 实现与虚拟继承一起工作。
【问题讨论】:
-
@S.M.:尊重。
标签: c++ gcc visual-c++ c++17 sfinae