capypad
0 Tage Serie
cpp / expert
Snippet

Fold Expressions für variadische Templates

Die in C++17 eingeführten Fold Expressions vereinfachen Operationen auf variadischen Template-Parameterpaketen. Anstelle von rekursiven Template-Aufrufen kann ein einzelner Ausdruck verwendet werden, um einen Operator auf alle Elemente im Paket anzuwenden.

snippet.cpp
cpp
1
2
3
4
5
6
7
template <typename... Args>
auto sum(Args... args) {
return (... + args);
}
 
// Usage:
// int total = sum(1, 2, 3, 4, 5); // 15
Erklärung
1
typename... Args
Deklariert ein Parameterpaket, das eine beliebige Anzahl von Template-Argumenten repräsentiert.
2
(... + args)
Ein Unary Right Fold, der zu (arg1 + (arg2 + (arg3...))) expandiert.