Heim > Backend-Entwicklung > C++ > Wie können C 17-Faltausdrücke den Aufruf variadischer Funktionen vereinfachen?

Wie können C 17-Faltausdrücke den Aufruf variadischer Funktionen vereinfachen?

Barbara Streisand
Freigeben: 2024-11-19 11:17:02
Original
954 Leute haben es durchsucht

How Can C  17 Fold Expressions Simplify Variadic Function Invocation?

Vereinfachen des Aufrufs variadischer Funktionen mithilfe von C 17 Folds

Variadic-Vorlagenargumente bieten eine bequeme Möglichkeit, mit Funktionen zu arbeiten, die eine variable Anzahl von Argumenten akzeptieren . Allerdings kann die Erstellung rekursiver Ketten zum Aufrufen von Funktionen für jedes variadische Argument zu einer redundanten Codegenerierung führen. So können Sie dieses Problem mithilfe von C 17-Faltausdrücken oder einer Lösung vor C 17 lösen.

C 17-Faltausdruck:

(f(args), ...);
Nach dem Login kopieren

Dieser Faltausdruck kann kann verwendet werden, um eine Funktion für alle variadischen Vorlagenargumente aufzurufen, was zu einem einzigen N-Argument-Funktionsaufruf führt.

Lösung vor C 17:

1 . Wrap-Funktion in Bezeichner:

Transformieren Sie die Funktion, um ein int zurückzugeben, das als Dummy-Argument in einer Initialisierungsliste verwendet werden kann:

int print_wrap(const T& t) {
  print(t);
  return 0;
}
Nach dem Login kopieren

2. Listeninitialisierer erstellen:

Verwenden Sie einen Listeninitialisierer, um die Variadic-Argumente zu erweitern und die geänderte Funktion aufzurufen:

{ print_wrap(args)... }
Nach dem Login kopieren

3. Definieren Sie den Helper-Namespace:

Um diesen Ansatz wiederverwendbar zu machen, definieren Sie einen Helper-Namespace:

namespace so {
  using expand_type = int[];
}

#define SO_EXPAND_SIDE_EFFECTS(PATTERN) ::so::expand_type{ 0, ((PATTERN), 0)... }
Nach dem Login kopieren

4. Verwendung:

SO_EXPAND_SIDE_EFFECTS(f(args));
Nach dem Login kopieren

Vorteile:

  • Generiert nur einen einzelnen Funktionsaufruf mit N Argumenten.
  • Unterstützt Funktionen mit überladene Kommaoperatoren.
  • Sorgt für die Auswertung von Argumenten von links nach rechts.

Das obige ist der detaillierte Inhalt vonWie können C 17-Faltausdrücke den Aufruf variadischer Funktionen vereinfachen?. 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