Instanziierung von Variadic-Vorlagenklassen-Argumentcontainern

8

Ich möchte eine variadische Template-Klasse Store<TArgs...> instanziieren, die für jeden Typ im std::vector pack ein TArgs... hat.

%Vor%

Sagen wir, ich habe ein Store<int, float, double> . Ich weiß natürlich, dass es zur Kompilierzeit in der Lage sein wird int , float und double Werte zu speichern.

Ich könnte Vorlagenspezialisierungen verwenden:

%Vor%

... aber das würde erfordern, jede mögliche Kombination von Typen von Hand zu schreiben und würde nicht mit benutzerdefinierten Typen arbeiten.

Ich bin zuversichtlich, dass der Compiler alles weiß, was benötigt wird, um eine Klasse wie Store<int, float, double> mit variadischen Vorlagen zu generieren - gibt es eine Möglichkeit, diese Absicht auszudrücken?

    
Vittorio Romeo 19.10.2013, 07:43
quelle

2 Antworten

9

Folgendes sollte tun, was Sie wollen:

%Vor%

Live-Beispiel (ohne die Kommentare)

    
Daniel Frey 19.10.2013, 08:42
quelle
5

In C ++ 14 sind die Elemente von std::tuple nach Typ zugänglich, sofern nicht mehrere Elemente desselben Typs vorhanden sind. Deshalb sollten Sie es so schreiben können:

%Vor%     
Morwenn 19.10.2013 08:51
quelle