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

问题描述

即使在使用 -fno-rtti 编译时,似乎 std::any works just fine 在 GCC 和 Clang 中也是如此。

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

他们采用以 any 类型为模板的变量的地址,这就是他们获得唯一 ID 的方式。

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

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)