【发布时间】:2012-10-04 08:36:05
【问题描述】:
我用g++编译了下面的代码,得到了输出,用cmets写的。
template<class T>
void foo(T t) { cout << typeid(t).name() << endl; }
int main() {
foo("f"); //emits "PKc"
foo(string()); //emits "Ss"
}
我知道,type_info.name() 没有标准化,但有什么方法可以获得人类可读的结果?
像下面这样就足够了
const char *
class string
【问题讨论】:
-
除非有人知道我不知道的标准的更新,否则
typeid是实现定义的,因此它返回的值也是如此。如果不再是这种情况,我也很想知道更多关于它的信息。在那之前,特定于您的编译器的修饰算法可能会引导您找到您正在寻找的答案(和去修饰)。 -
它完全依赖于实现。 Microsoft 的 cl 将使用类似于您所期望的名称。