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