26 #include <boost/core/demangle.hpp>
30 std::pair<std::string, std::string>
33 const std::string demangled = boost::core::demangle(mangled.c_str());
34 static const auto removeNamespaceSpecifier = [](
const std::string& demangled)
36 std::size_t substrStart = 0;
37 std::size_t level = 0;
38 if (!demangled.empty())
39 for (
int i =
static_cast<int>(demangled.size() - 1); i >= 0; --i)
41 if (!level && demangled.at(i) ==
':')
46 level += (demangled.at(i) ==
'>') - (demangled.at(i) ==
'<');
48 return demangled.substr(substrStart);
50 return {demangled, removeNamespaceSpecifier(demangled)};