Syntaxregeln für das „…“-Token in Variadic-Vorlagen
In C ermöglichen Variadic-Vorlagen die Erstellung von Vorlagen, die a akzeptieren Variable Anzahl von Argumenten. Das „…“-Token spielt in diesem Zusammenhang eine entscheidende Rolle und dient entweder als Argumentpaket oder als Parameter-Entpacker.
Syntaxregeln für die Ellipsenplatzierung
Die Die Platzierung des „…“-Tokens bestimmt seine Funktion:
Beispiel: Variadic-Vorlage mit „…“
Betrachten Sie das folgende Variadic template:
template
unique_ptr make_unique( Args&&... args )
{
return unique_ptr(new T(std::forward(args)...));
}
In diesem Beispiel dient „…“ als Argumentpaket, während „…“ in der Funktionsimplementierung die Argumente in die Variable args entpackt.
Grund für die unterschiedliche Platzierung der Auslassungspunkte
Der Unterschied in der Platzierung der Auslassungspunkte zwischen der Vorlagenargumentliste und der Parameterliste ist auf den Unterschied zwischen Argumentpacken und Parameterentpacken zurückzuführen. In der Vorlagenargumentliste bedeutet „…“, dass die Parameter in ein einzelnes Parameterpaket gepackt werden sollen, während „…“ in der Parameterliste angibt, dass die Argumente in einzelne Parameter entpackt werden sollen.
Entpacken von Mustern
Wenn „…“ auf der rechten Seite eines Ausdrucks als Entpacker erscheint, folgt es einem bestimmten Muster:
Erweiterte Verwendung: Arrays initialisieren
Ellipsen können auch zum Initialisieren verwendet werden arrays:
struct data_info
{
boost::any data;
std::size_t type_size;
};
std::vector v{{args, sizeof(T)}...}; //pattern = {args, sizeof(T)}
Dies initialisiert den Vektor v mit Werten, wobei jedes Element eine Struktur ist, die ein args- und ein sizeof(T)-Paar enthält.
Abschließend , das „…“-Token im Kontext von Variadic-Vorlagen dient sowohl als Argumentpaket als auch als Parameter-Entpacker und folgt spezifischen Syntaxregeln für Platzierungs- und Entpackmuster. Seine flexible Nutzung ermöglicht leistungsstarke Vorlagenkonstruktionen und -anpassungen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3