Extrahieren Sie nur die Argumenttypliste aus declltype (someFunction)

8

Ich habe eine variadische Vorlage, die eine Liste von Parametern für eine Funktion darstellt, zB:

%Vor%

Gibt es eine Möglichkeit, nur die Argumenttypen aus decltype (func) zu extrahieren, um zu sparen, dass ich sie manuell schreiben muss, zB:

%Vor%

ie decltype in diesem Fall würde mir "void (int, int, string)" geben, aber gibt es eine Möglichkeit, nur den "int, int, string" -Teil zur Verwendung in der variadischen Vorlage zu extrahieren?

Hinweis: Ich muss die Variadic-Template-Methode verwenden, weil sie innerhalb der Vorlage die Verarbeitung für jeden Argumenttyp nacheinander durchführt.

    
gimmeamilk 18.09.2013, 11:22
quelle

2 Antworten

14

Folgendes sollte funktionieren:

%Vor%     
Daniel Frey 18.09.2013, 11:35
quelle
8

Hier ist eine Alternative (Ideen aus Daniel Frey s Lösung ) mit einer Funktionsvorlage anstelle einer Klassenvorlage:

%Vor%

Bearbeiten : Kommentare zu meiner Lösung x Daniel Frey :

Mine spart Tippen. Sein ist mehr idiomatisch. In der Tat, in C ++ Metaprogrammierung a "Funktion" (oder eine Meta-Funktion), die Typen akzeptiert und einen Typ zurückgibt (in der Regel) als Template-Klasse implementiert, deren Mitglied type gibt Rückkehr. Aus diesem Grund bevorzuge ich seine Lösung.

    
Cassio Neri 18.09.2013 12:15
quelle