Using $ breaks demangling of the symbols. For example,
$ c++filt _Z3foov\$123 _Z3foov$123
This causes problems for developers who would like to see nice stack traces etc. but also for automatic crash tracking systems which try to organize crashes based on the stack traces.
Instead, use the period as suffix separator, since Itanium demanglers normally ignore such suffixes:
$ c++filt _Z3foov.123 foo() [clone .123]
This is already done in some places; create a utility function to do it, and try to use that everywhere.
clang-format: please reformat the code