ExpertiDict

C++ · Avançado · Inglês · Técnico

fold expression

foʊld ɪkˈspɹɛʃ.ənsubstantivo

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);  // 6

Exemplos

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

Veja também

Todos os termos de C++