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

Pourquoi C ne peut-il pas déduire les paramètres de modèle à partir des arguments de fonction par défaut ?

Linda Hamilton
Libérer: 2024-11-05 08:07:02
original
362 Les gens l'ont consulté

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

Déduction des paramètres de modèle à partir des arguments de fonction par défaut

L'incapacité du compilateur à déduire les arguments de modèle à partir des arguments de fonction par défaut dans le code fourni peut être attribuée aux stipulations du C spécification du langage.

En C 03, comme cité au §14.8.2/17 de la spécification, "Un paramètre de type de modèle ne peut pas être déduit du type d'un argument par défaut de fonction." Cette restriction interdit explicitement l'utilisation d'arguments par défaut pour la déduction des paramètres de modèle.

Bien que C 11 ait introduit la possibilité de spécifier des arguments de modèle par défaut pour les modèles de fonction, l'argument de fonction par défaut n'est toujours pas utilisable pour la déduction des arguments de modèle. Plus précisément, C 11 §14.8.2.5/5 indique que « Les contextes non déduits sont : ... 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 argument la déduction est en cours."

Par conséquent, l'incapacité du code fourni à déduire le paramètre de modèle pour T à partir de l'argument par défaut 0.0f est cohérente avec la spécification du langage. Pour résoudre le problème, un argument de modèle explicite doit être fourni lors de l'appel de la fonction bar, comme démontré dans le code révisé suivant :

a.bar<float>(5);
Copier après la connexion

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