Maison  >  Article  >  développement back-end  >  ## Le C 17 peut-il obtenir une déduction partielle des arguments du modèle de classe ?

## Le C 17 peut-il obtenir une déduction partielle des arguments du modèle de classe ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-25 06:20:28261parcourir

## Can C  17 Achieve Partial Class Template Argument Deduction?

Déduction partielle des arguments de modèle de classe en C 17

En C 17, la déduction d'arguments de modèle de classe (CTAD) permet la déduction d'arguments de modèle en fonction des arguments transmis à un fonction ou constructeur. Cependant, ce processus nécessite actuellement que tous ou aucun des arguments soient spécifiés.

La question se pose de savoir s'il est possible de spécifier partiellement les arguments du modèle et de faire déduire les arguments restants. Par exemple :

<code class="cpp">Base<V = bool> val1(1, 4.);        // U & V deduced --> Base<int, double, bool>
Base<T = bool, T =int> val2(5.);  // V deduced     --> Base<bool, int, double></code>

Cependant, tenter d'utiliser des modèles d'alias pour y parvenir, tels que :

<code class="cpp">template<class T, class U> using Base2 = Base<T, U, double>;

void func() {
    NewBase2 val(1, 2);
}</code>

entraîne une erreur de compilation.

Actuellement, CTAD ne prend pas en charge la déduction partielle. L'article P1021R0, qui proposait cette fonctionnalité, n'a pas été accepté. Cependant, C 20 peut inclure la prise en charge des modèles d'alias (P1814) et des agrégats (P1816), ce qui pourrait constituer une solution de contournement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn