C++ Demangle

Da Andreabont's Wiki.

La funzione demangle permette di ottenere, dal name mangling, il nome leggibile della funzione o metodo che rappresenta.

Esempio da linea di comando

Esiste il programma c++filt in grado di eseguire il demangling da standard input oppure da parametri da linea di comando.

c++filt -t 1XIiE          # Parametri
echo "1XIiE" | c++filt -t # Standard input

Esempio con le BOOST

Nelle librerie BOOST esiste la funzione demangle:

#include <boost/core/demangle.hpp>
#include <typeinfo>
#include <iostream>

template<class T> struct X {
   // Codice
};

int main()
{
    char const * name = typeid( X<int> ).name();

    std::cout << name << std::endl; // Stampa 1XIiE
    std::cout << boost::core::demangle( name ) << std::endl; // Stampa X<int>
}