查看 LLVM 文档,他们提到了 他们使用“ RTTI 的自定义形式”,这就是他们拥有 isa<>
、 cast<>
和 dyn_cast<>
模板函数的原因。
通常,读到库重新实现某种语言的某些基本功能是一种糟糕的代码味道,只会让人想要运行它。然而,这是我们正在谈论的 LLVM: 这些家伙正在开发一个 C + + 编译器 还有 a C + + 运行时。如果他们不知道他们在做什么,我就完蛋了,因为我更喜欢 clang
而不是随 Mac OS 一起运行的 gcc
版本。
尽管如此,由于没有他们那么有经验,我还是想知道正常 RTTI 的缺陷是什么。我知道它只适用于具有 v 表的类型,但这只引发了两个问题:
virtual
呢?虚拟毁灭者似乎很擅长这个。