C++ · Intermediário · Inglês · Técnico
variadic template
Template que aceita um número variável de argumentos de tipo, declarado com um pacote de parâmetros (typename... Ts). O pacote é expandido com reticências nos pontos de uso.
Onde usar
Base de funções como std::make_unique, emplace_back e std::tuple, que repassam qualquer número de argumentos. Aparece em wrappers e em fábricas genéricas.
Em código
template <typename... Ts>
void log(const Ts&... args) {
((std::cout << args << ' '), ...);
}
log(1, "a", 2.5); // 1 a 2.5Exemplos
A variadic template lets the wrapper forward any arguments.
Um variadic template deixa o wrapper repassar quaisquer argumentos.
Expand the pack with three dots after the pattern.
Expanda o pacote com três pontos depois do padrão.
Cuidado
O pacote não é um contêiner em tempo de execução; para percorrê-lo usa-se expansão, fold expression ou recursão.
Sinônimos
template com pacote de parâmetros