C++ · Avançado · Inglês · Técnico
fold expression
Expressão do C++17 que aplica um operador binário a todos os elementos de um pacote de parâmetros, como (args + ...). Evita recursão para somar, comparar ou imprimir argumentos variádicos.
Onde usar
Usada em templates variádicos para somar, combinar com && ou chamar uma função para cada argumento, com o operador vírgula. Deixa o código curto e legível.
Em código
template <typename... Ts>
auto soma(Ts... xs) {
return (xs + ...); // fold unário
}
template <typename... Ts>
bool todos(Ts... xs) { return (... && xs); }
soma(1, 2, 3); // 6Exemplos
Use a fold expression to sum all the arguments.
Use uma fold expression para somar todos os argumentos.
The comma fold calls print for every argument.
O fold com vírgula chama print para cada argumento.
Cuidado
Os parênteses são obrigatórios, e pacote vazio só é aceito com &&, || e vírgula; para os demais operadores, use um fold com valor inicial.
Sinônimos
expressão de dobra