代码之家  ›  专栏  ›  技术社区  ›  NoSenseEtAl

为什么std::任何实现都使用typeid?

  •  2
  • NoSenseEtAl  · 技术社区  · 5 年前

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

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

    它们获取any中以类型为模板的变量的地址,从而获得唯一的id。

    但只有当没有打开RTTI时,此代码才处于活动状态。

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

    0 回复  |  直到 5 年前