ExpertiDict

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

CTAD

ˈsiː.tædsigla

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.

Veja também

Todos os termos de C++