10 std::string_view full_function_name = location.function_name();
13 if (full_function_name.empty()) {
18 const auto paren_pos = full_function_name.find(
'(');
19 std::string_view qualified_name;
21 if (paren_pos != std::string_view::npos) {
24 qualified_name = full_function_name.substr(0, paren_pos);
27 while (!qualified_name.empty() && std::isspace(qualified_name.back())) {
28 qualified_name.remove_suffix(1);
33 const auto last_space = qualified_name.find_last_of(
' ');
34 if (last_space != std::string_view::npos) {
35 qualified_name = qualified_name.substr(last_space + 1);
40 qualified_name = full_function_name;
43 while (!qualified_name.empty() && std::isspace(qualified_name.back())) {
44 qualified_name.remove_suffix(1);
49 const auto last_colon = qualified_name.rfind(
"::");
50 if (last_colon != std::string_view::npos) {
51 qualified_name = qualified_name.substr(last_colon + 2);
54 return std::string{qualified_name};
std::string extract_function_name(const std::source_location &location=std::source_location::current())
Extracts the function name from a source location.