Im Wesentlichen wird beim Erweitern eines Parameterpakets E...
eine Liste E1, E2, [...], EN
, ein E
für jedes Element im Paket erstellt. Dieses syntaktische Konstrukt ist nur an Stellen gültig, an denen Listen grammatikalisch korrekt sind, z. B. in Funktionsaufrufen, Initialisierungslisten usw. Ein Ausdruck, der mehrere Kommaoperatoren enthält, zählt nicht.
Ich glaube, dass Ausdrücke falten (N4295: Folding Ausdrücke (Andrew Sutton, Richard Smith) ) Sie können einfach schreiben:
%Vor%In diesem Ausdruck
print(a)
ist ein Ausdruck mit einem nicht erweiterten Parameterpack ,
ist der Operator und ...
bezeichnet die richtige Faltenexpansion. Das Ergebnis des gesamten Ausdrucks ist, dass (print(a), ...)
in
Pack-Erweiterungen können nur in Pack-Erweiterungskontexten vorkommen. Diese sind im Wesentlichen:
Von diesen die leichter in Ihrem Fall zu verwenden wäre die letzte:
%Vor%Tags und Links c++ variadic-templates variadic-functions c++14