【发布时间】:2013-09-17 21:02:31
【问题描述】:
我在任何地方都找不到这个看似简单的问题的答案。
以下 C++ 函数是否使用 RTTI?当然不必,但我想知道是否可以保证 typeid 将在编译时确定。
template <typename T>
const char *getName()
{
return typeid(T).name(); // Resolved at compile time?
}
【问题讨论】:
-
它将在什么对象上使用 RTTI?
-
@someone_smiley:如果编译器不知道
T是什么,它如何生成正确的特化? -
cpp 参考的“注释”部分说 (en.cppreference.com/w/cpp/language/typeid):“当应用于多态类型的表达式时,对 typeid 表达式的评估可能涉及运行时开销(虚拟表查找),否则typeid 表达式在编译时解析。"
-
@CharlesBailey: T 必须在编译时知道,否则程序无法编译。
-
@Watusimoto:如果你知道那我不明白你在问什么问题。