typeid().name()の出力
g++ではtype_info::name()で出力される
型名が人類には早すぎる文字列で出力されています
#include<iostream> #include<typeinfo> int main(){ std::cout << typeid([](int)->int{}).name() << std::endl; // 型直接渡してもよい std::cout << typeid(int).name() << std::endl; }
> Z4mainEUliE0_ > i
ちょっと調べたところ
マングル(?)されているそうです
よく判りません
しかし、読めるようにするにはデマングリングすればよいらしいです!
その記述は以下のようにすればよいそうです!!
#include<iostream> #include<typeinfo> #include <cxxabi.h> int main(){ int status = 0; // 宣言しないといけない std::cout << abi::__cxa_demangle( typeid([](int)->int{}).name(), 0, 0, &status ) << std::endl; // 型直接渡してもよい std::cout << abi::__cxa_demangle( typeid(int).name(), 0, 0, &status ) << std::endl; }
> main::{lambda(int)#1} > int