#include <iostream>
#include <typeinfo>
using namespace std;
#include <cstdlib>
#include <memory>
#include <cxxabi.h>
std::string demangle(const char* name) {
int status = -4; // some arbitrary value to eliminate the compiler warning
// enable c++11 by passing the flag -std=c++11 to g++
std::unique_ptr<char, void(*)(void*)> res {
abi::__cxa_demangle(name, NULL, NULL, &status),
std::free
};
return (status==0) ? res.get() : name ;
}
int main() {
cout << demangle(typeid(decltype("Hello, world!")).name()) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPGN4eGFiaS5oPgoKc3RkOjpzdHJpbmcgZGVtYW5nbGUoY29uc3QgY2hhciogbmFtZSkgewoKICAgIGludCBzdGF0dXMgPSAtNDsgLy8gc29tZSBhcmJpdHJhcnkgdmFsdWUgdG8gZWxpbWluYXRlIHRoZSBjb21waWxlciB3YXJuaW5nCgogICAgLy8gZW5hYmxlIGMrKzExIGJ5IHBhc3NpbmcgdGhlIGZsYWcgLXN0ZD1jKysxMSB0byBnKysKICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyLCB2b2lkKCopKHZvaWQqKT4gcmVzIHsKICAgICAgICBhYmk6Ol9fY3hhX2RlbWFuZ2xlKG5hbWUsIE5VTEwsIE5VTEwsICZzdGF0dXMpLAogICAgICAgIHN0ZDo6ZnJlZQogICAgfTsKCiAgICByZXR1cm4gKHN0YXR1cz09MCkgPyByZXMuZ2V0KCkgOiBuYW1lIDsKfQoKaW50IG1haW4oKSB7Cgljb3V0IDw8IGRlbWFuZ2xlKHR5cGVpZChkZWNsdHlwZSgiSGVsbG8sIHdvcmxkISIpKS5uYW1lKCkpIDw8IGVuZGw7CglyZXR1cm4gMDsKfQ==