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%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%Tags und Links c++ template-templates c++14 c++17 variable-templates