Variable Vorlagenvorlage?

8

Angenommen, Sie haben einen Tupel-Typ und möchten das Template-Parameterpaket extrahieren, um eine andere Vorlage zu instanziieren. Wenn das eine Typvorlage ist, kann ich ein Dienstprogramm wie folgt haben:

%Vor%

Aber was ist, wenn die gewünschte Vorlage eine variable Vorlage ist? Während template <typename...> typename What der "Platzhalter" für eine Typvorlage ist, was ist dann der "Platzhalter" für eine variable Vorlage?

Ich habe das folgende für clang-4.0.0 versucht (der einzige Compiler, der inzwischen nicht-type Template-Parameter mit automatischem Typ unterstützt), aber es ist fehlgeschlagen. Eigentlich bin ich nicht sicher, ob dies eine korrekte Syntax für C ++ 17 ist.

%Vor%     
Vahagn 23.10.2016, 08:29
quelle

2 Antworten

6

Ich glaube nicht, dass Sie das tun können. N4606 zitieren:

  

§14.3.3 [temp.arg.template] / 1

     

Ein Template-Argument für einen Template Template-Parameter soll das sein   Name einer Klassenvorlage oder einer Aliasvorlage, ausgedrückt als    ID-Ausdruck .

Eine variable Vorlage passt nicht zu dieser Anforderung.

Sie könnten etwas schummeln und einen Proxy-Typ verwenden, um die Vorlage auszuwählen:

%Vor%

und dann für

%Vor%

könnte man sagen

%Vor%

Live-Demo

    
krzaq 23.10.2016, 09:20
quelle
0

PutTupleInTV ist nicht derselbe Name wie PutTupleInV. Sie spezialisieren sich nicht auf die Vorlage PutTupleInV, sondern verwenden die Spezialsyntax, um etwas Neues zu erstellen, genannt PutTupleInTV.

    
yeoman 23.10.2016 08:47
quelle