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
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.