c – 在运行时或编译时是否对typeid(T)进行评估?

前端之家收集整理的这篇文章主要介绍了c – 在运行时或编译时是否对typeid(T)进行评估?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我无法在任何地方找到这个看似简单的问题的答案.

以下C函数是否使用RTTI?它当然不必,但我想知道是否有保证在编译时确定typeid.

template <typename T>
const char *getName()
{
   return typeid(T).name();   // Resolved at compile time?
}

解决方法

由于typeid应用于类型而不是对象,因此没有运行时类型信息,因此开销不会成为问题.

另一方面:据我所知,标准对何时确定值没有要求,因此无法保证不存在运行时开销.

编辑:当然,(可能)没有保证的事实并不意味着它不是一个合理的假设.我无法想象有人会编写一个在编译时没有评估typeid(T)的编译器.

猜你在找的C&C++相关文章