Ich möchte angeben, dass ein bestimmter Typ, der von Boost TypeIndex boost::typeindex::type_id<T>().pretty_name()
gemeldet wird, einen bestimmten Namen ergeben würde.
Das Problem, das ich lösen möchte, ist, dass, wie an anderen Stellen berichtet, ein bestimmter Fall verwirrend ist, das heißt, der std::string
-Typ (oder Alias) wird als std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >
gemeldet.
(Ich verstehe den Grund dafür, std::string
ist ein Alias. Ich möchte nur die gemeldete Zeichenfolge in diesem speziellen Fall überschreiben.)
Ich folgte den Anweisungen hier Ссылка und dem Beginn des benutzerdefinierter Code sieht folgendermaßen aus:
%Vor%Aber am Ende kann ich höchstens einen Berichtstyp durch einen anderen ersetzen, anstatt nur einen Fall zu ändern.
Eine leichtgewichtige Lösung könnte die Spezialisierung boost::typeindex::stl_type_index
(der Ausgabetyp von type_id<std::string>()
) sein, aber bis dahin ist die tatsächliche statische Information der Klasse verloren. (Es gibt keine zu spezialisierende Klasse.)
Aber das kann nicht ohne eine vollständige Spezialisierung von typeid<std::string>
getan werden, die schwierig zu tun scheint.
Gibt es einen Workaround dafür? Ich würde lieber eine Lösung in Boost.Typeindex als eine Laufzeit-String-Ersetzung bevorzugen.
Das ist eine sehr schmutzige Art, die ich gefunden habe, aber sie ist nicht perfekt und kann andere Probleme auf der Straße verursachen.
%Vor%