为什么 std::any 实现使用 typeid?

NoS*_*tAl 5 c++ optimization rtti libc++ stdany

即使使用 -fno-rtti 编译,它似乎在 GCC 和 Clang 中std::any 也能正常工作。

在查看 libc++ 源代码时,我发现他们只是使用了一个简单的技巧:

它们获取以任何类型为模板的变量的地址,这就是它们获取唯一 ID 的方式。

但此代码仅在没有打开 RTTI 时才有效。

这让我想知道。他们为什么首先使用 RTTI?为什么不总是使用这个解决方案呢?我不知道为什么typeid比简单的指针(指向每个类型实例化的静态变量)比较更快。