type_infoのラッパー
ここらへん
で、書いた
https://github.com/Flast/trance/blob/master/trance/typeinfo.hpp
typeid( expr ) typeid( type-id ) なんだけど、exprとtype-idを同じ構文で扱う方法が思いつかなかったから二つに・・・悲しいな・・・
使い方は
#include <iostream> #include <trance/typeinfo.hpp> int main( void ) { const trance::type_info &info_type = TRANCE_TYPEID_BY_TYPE( int ); const trance::type_info &info_expr = TRANCE_TYPEID_BY_EXPR( 0 ); std::cout << "by int" << std::endl << "\tmangled: " << info_type.name() << std::endl << "\tdemangled: " << info_type.demangled_name() << std::endl; std::cout << "by 0" << std::endl << "\tmangled: " << info_expr.name() << std::endl << "\tdemangled: " << info_expr.demangled_name() << std::endl; }
もちろんconst std::type_info &へstatic_cast可能です。なので、0xで使う場合もstd::type_indexを使用することができます。
とはいえ、現在はlibstdc++にのみ対応しているので、msvcで使いたいっていう危篤な方はmsvcの資料と共に何かしらつついてください。