Parameterpakete nicht mit '...' erweitert

8
%Vor%

Es wirft Fehler:

%Vor%

Warum ist die Verwendung dieser "Pass" -Funktion notwendig?

    
q126y 23.11.2015, 10:17
quelle

2 Antworten

12

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

umgewandelt wird %Vor%     
TartanLlama 23.11.2015, 10:28
quelle
5

Pack-Erweiterungen können nur in Pack-Erweiterungskontexten vorkommen. Diese sind im Wesentlichen:

  • gestaffelte Initialisierung
  • Initialisierungslisten
  • aggregierte Initialisierungen
  • Funktionsaufrufe
  • Array-Initialisierungen

Von diesen die leichter in Ihrem Fall zu verwenden wäre die letzte:

%Vor%

Demo

    
Nikos Athanasiou 23.11.2015 11:04
quelle