7
我用g++
編譯了下面的代碼,並得到了輸出,它寫在註釋中。人類可讀的type_info.name()
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()
不standartized,但有什麼辦法讓人類可讀的結果嗎?
像下面這樣會好到足夠多的
const char *
class string
除非有人知道我不知道標準的更新,'typeid'是實現定義的,因此它返回的值也是如此。如果這不再是這種情況,我很想知道更多關於它的情況。在此之前,特定於編譯器的mangling算法可能會引導您尋找所需的答案(和解除合併)。 – WhozCraig
完全依賴實施。微軟的cl會使用類似於你期望的名字。 – oldrinb
相關http://stackoverflow.com/questions/81870/is-it-possible-to-print-a-variables-type-in-standard-c –