C++ · Avançado · Inglês · Técnico
CTAD
Dedução de argumentos de template de classe, do C++17: o compilador deduz os parâmetros a partir do construtor, permitindo escrever std::vector v{1, 2, 3} sem informar o tipo.
Onde usar
Reduz a verbosidade com pair, tuple, vector e array. Em classes próprias, guias de dedução ensinam o compilador a deduzir quando o construtor não basta.
Em código
std::vector v{1, 2, 3}; // vector<int>
std::pair p{1, 2.5}; // pair<int, double>
std::vector w(3, 4); // {4, 4, 4}
std::vector u{3, 4}; // {3, 4}Exemplos
With CTAD you can drop the template arguments here.
Com CTAD você pode omitir os argumentos do template aqui.
Add a deduction guide so CTAD works for our class.
Adicione um guia de dedução para o CTAD funcionar na nossa classe.
Cuidado
Chaves e parênteses dão resultados diferentes: vector v{3, 4} tem dois elementos, enquanto vector v(3, 4) tem três elementos valendo 4.
Sinônimos
dedução de argumentos de classe
Origem
Sigla de Class Template Argument Deduction.