にゃははー

はへらー

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の資料と共に何かしらつついてください。