Maison > développement back-end > C++ > Pourquoi les compilateurs C ne peuvent-ils pas déduire les paramètres de type de modèle à partir des arguments de fonction par défaut ?

Pourquoi les compilateurs C ne peuvent-ils pas déduire les paramètres de type de modèle à partir des arguments de fonction par défaut ?

Susan Sarandon
Libérer: 2024-11-05 07:55:02
original
516 Les gens l'ont consulté

Why Can't C   Compilers Deduce Template Type Parameters from Default Function Arguments?

Pourquoi les compilateurs ne peuvent-ils pas déduire les paramètres de type de modèle à partir des arguments de fonction par défaut ?

Malgré l'hypothèse apparemment logique, les compilateurs C ne peuvent pas automatiquement déduire un modèle tapez les paramètres à partir des arguments de fonction par défaut. Cela est vrai aussi bien en C 03 qu'en C 11, pour des raisons distinctes.

En C 03, l'incapacité du compilateur provient de spécifications explicites du langage (§14.8.2/17) : "Un paramètre de type de modèle ne peut pas être déduit du type d'argument par défaut d'une fonction."

En C 11, s'il est possible de spécifier un argument de modèle par défaut, il doit être fourni explicitement. L'argument de fonction par défaut lui-même reste inutilisable pour la déduction d'argument de modèle :

<code class="cpp">void bar(int a, T b = 0.0f) { } // C++11</code>
Copier après la connexion

La norme C 11 (14.8.2.5/5) définit des contextes non déduits, qui incluent :

  • "Un paramètre de modèle utilisé dans le type de paramètre d'un paramètre de fonction qui a un argument par défaut qui est utilisé dans l'appel pour lequel la déduction d'argument est effectuée."

En conséquence, la disposition explicite des arguments de modèle par défaut sont souvent nécessaires pour éviter les erreurs de compilation.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal