看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux GNU 5.7.2 問題(Question): 目前有個 template<typename T> class foo{ public: void print_type(){ //我想要在這邊print出type的資訊 //也就是T到底會是什麼 } }; 補充說明(Supplement): 目前我已知兩個方法 1)typeid 但是因為好像不是標準的東西 每個compiler都會印出不同東西... 而且印出來的type也不完整(會多也會少字 怕字串處理後會有例外 2)__PRETTY_FUNCTION__ 好像是gnu專用? 這就很符合我的需要(雖然還是要將不需要的資訊刪除 主要是擔心怕說只用其他compiler後,會出問題(不同輸出資料或者根本無法使用) 所以不知道有沒有其他方法? 看起來標準內好像沒有東西可以做出這個... 或者是我眼殘沒看到orz 感謝各位板友 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.157.161
suhorng:typeid應該是標準吧? 05/31 17:50
LPH66:但是得到的 std::type_info 卻是 implementation defined 05/31 20:08
LPH66:([18.7.1-9] Returns: An implementation-defined NTBS) 05/31 20:09
LPH66:([18.7.1-1] 也提到它的實際內容是 unspecified) 05/31 20:10
LPH66:C++11 的 type_index 倒是提供了一個自己設定的方法 05/31 20:14
LPH66:可參考 cppreference 的例子: http://tinyurl.com/b2r55yo 05/31 20:14
loveme00835:這樣自己 mapping 就好啦 xD 06/01 01:43
loveme00835:反正具現化這些小東西好像不用錢, 就開下去吧 06/01 02:00
loveme00835:http://ideone.com/40kaLl 06/01 02:00
suhorng:無視標準的話gnu libstdc++有提供他的demangling function 06/01 02:10
suhorng://gcc.gnu.org/onlinedocs/libstdc++/manual/ 06/01 02:10
suhorng:ext_demangling.html 06/01 02:11