Heim > Backend-Entwicklung > C++ > Wie funktioniert das Auslassungszeichen (...) in C 11-Variadic-Vorlagen?

Wie funktioniert das Auslassungszeichen (...) in C 11-Variadic-Vorlagen?

Barbara Streisand
Freigeben: 2024-10-30 01:03:28
Original
772 Leute haben es durchsucht

How does the ellipsis (...) token work in C  11 variadic templates?

Variadic-Vorlagen und das Ellipsen-Token ("...")

In C 11 ermöglichen Variadic-Vorlagen eine flexible Anzahl von Vorlagen Parameter. Bei der Definition einer Variadic-Vorlage spielt das Auslassungszeichen (...) eine entscheidende Rolle.

Entpacken vs. Packen

Die Position der Auslassungspunkte bestimmt ihre Funktion:

  • Entpacken (rechte Seite): Bei Verwendung auf der rechten Seite eines Ausdrucks entpackt ... ein Vorlagenparameterpaket. Die entpackten Muster, durch Kommas getrennt, ersetzen die Auslassungspunkte im eigentlichen Funktionsaufruf.
  • Packen (linke Seite): Wenn es auf der linken Seite platziert wird, packt ... Argumente in ein Vorlagenparameterpaket. Die gepackten Argumente sind innerhalb der Funktion als einzelne Entität verfügbar.

Beispiel für das Entpacken

Betrachten Sie die folgende variable Vorlagenfunktion:

<code class="cpp">template< class T, class... Args >
unique_ptr<T> make_unique( Args&amp;&amp;... args )
{
    return unique_ptr<T>(new T(std::forward<Args>(args)...));
}</code>
Nach dem Login kopieren

Beim Aufrufen von make_unique mit mehreren Argumenten ermöglichen die Auslassungspunkte (in std::forward(Args>(args)...) der Funktion, eine variable Anzahl von Argumenten zu akzeptieren. Die Auslassungspunkte entpacken das Args-Parameterpaket, was zur Folge hat Folgender erweiterter Ausdruck:

<code class="cpp">std::forward<Arg0>(arg0), std::forward<Arg1>(arg1), ...</code>
Nach dem Login kopieren

Platzierung der Auslassungspunkte in Vorlagen- und Funktionsargumenten

In der Liste der Vorlagenargumente werden die Auslassungspunkte in der Mitte platziert, um anzuzeigen, dass der Parameter Das Paket wird in der Funktionsparameterliste fortgesetzt. Dies liegt daran, dass dem variadischen Parameterpaket möglicherweise zusätzliche Vorlagenparameter (z. B. nicht-variadische Parameter) folgen.

In der Funktionsimplementierung werden die Auslassungspunkte am Ende platziert des Ausdrucks, um das Ende der entpackten Argumente zu markieren. Dadurch wird sichergestellt, dass alle verbleibenden Argumente übergeben werden, ohne in eine einzige Entität gepackt zu werden.

Zusätzliche Anwendungen

Die Auslassungspunkte kann auch in anderen Kontexten verwendet werden, wie zum Beispiel:

  • Erstellen von Arrays mit variadischen Initialisierern
  • Definieren von Klassen, die von mehreren Basisklassen erben (über eine öffentliche Mixins...-Syntax)

Das obige ist der detaillierte Inhalt vonWie funktioniert das Auslassungszeichen (...) in C 11-Variadic-Vorlagen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage