Mögliches Template für Typen ODER Nicht-Typen?

8

Ich benutze viele Vorlagen und es ist manchmal schwierig herauszufinden, welcher Typ eigentlich alles ist. Ich wollte ein Dienstprogramm schreiben, um mir einen schönen, schönen String-Namen für jeden Typ zu geben - typid () schneidet es einfach nicht ab. Zum Beispiel, wenn ich nur ein vector<int> habe, erzeugt gcc.4.6.4 auf meiner Box Folgendes mit typeid:

%Vor%

während ich im Idealfall

möchte %Vor%

Ich habe etwas geschrieben, das mit jedem Typ oder Template auf Typen funktioniert, aber nur zwei Vorlagen zur Verfügung stellt:

%Vor%

Wenn ich mich auf int oder std::vector spezialisiert habe, kann es mir helfen, die gewünschten Strings aufzubauen. Ich habe auch eine partielle Spezialisierung von simple_type_name auf jede Base<Args...> , um alle Argumente durchzugehen und alles entsprechend zu tun. Das funktioniert ganz gut für int und vector<int> und wirklich jeden beliebig komplizierten Template-Kram ... solange alle Templates Typen sind.

Wenn es hilft, sieht meine "vollständige Vorlage" Version so aus:

%Vor%

Frage ist : Wie mache ich, wofür ich arbeite, sagen wir, std::array<int, 10> ? Ich weiß nicht, wie ich mit den Nicht-Typ-Parametern umgehen soll. Ist das überhaupt möglich?

    
Barry 16.12.2013, 16:11
quelle

2 Antworten

3

Eine etwas einfachere Version von demangle mit einigen Convenience Wrappern:

%Vor%

, die Sie verwenden können:

%Vor%

direkt, um zu sehen, was T tatsächlich ist.

    
Daniel Frey 16.12.2013, 17:29
quelle
7

Wenn Sie ein g ++ spezifisches Problem haben möchten:

%Vor%

(Versuch / Fang hinzugefügt - Danke an Daniel Frey)

    
Dieter Lücking 16.12.2013 16:26
quelle

Tags und Links