91 {
92 int status;
93 auto realname = std::unique_ptr<char, decltype( free )*>(
94 abi::__cxa_demangle( id.c_str(), nullptr, nullptr, &status ), free );
95 if ( !realname ) return id;
96 std::string result = realname.get();
97
98 result = std::regex_replace(
99 result,
100 std::regex{ "std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >( (?=>))?" },
101 "std::string" );
102
103 result = std::regex_replace( result, std::regex{ "std::__1::" }, "std::" );
104
105 result = std::regex_replace(
106 result, std::regex{ "std::basic_string<char, std::char_traits<char>, std::allocator<char>>( (?=>))?" },
107 "std::string" );
108
109 result = std::regex_replace( result, std::regex{ ">>" }, "> >" );
110 result = std::regex_replace( result, std::regex{ ">>" }, "> >" );
111 return result;
112 }