Maison >développement back-end >C++ >Pouvez-vous spécifier explicitement les paramètres de modèle dans les définitions de constructeur ?

Pouvez-vous spécifier explicitement les paramètres de modèle dans les définitions de constructeur ?

DDD
DDDoriginal
2024-11-29 16:42:12707parcourir

Can You Explicitly Specify Template Parameters in Constructor Definitions?

La spécification explicite des paramètres de modèle dans la définition du constructeur peut-elle être obtenue ?

Malgré la possibilité de créer des modèles de constructeur au sein d'une classe, le processus de compilation déduit généralement les paramètres du modèle à partir des arguments. fourni. Cependant, un doute surgit s'il existe une syntaxe permettant la spécification explicite des paramètres de modèle dans de tels constructeurs.

Considérons la structure suivante comme exemple :

struct A {
  template<typename T>
  A() {}
};

La question se pose : existe-t-il une méthode pour instancier cette structure ou définir explicitement les paramètres de modèle de son constructeur ?

En pratique, des scénarios peuvent survenir dans lesquels le compilateur ne parvient pas à identifier le constructeur modèle correct, ce qui conduit à d'éventuelles difficultés. La spécification explicite des paramètres du modèle pourrait améliorer le rapport d'erreurs ou même résoudre le problème.

Réponse :

Malheureusement, la norme C 03 offre une réponse définitive :

"Étant donné que les modèles de fonctions membres de conversion et les modèles de fonctions membres de constructeur sont appelés sans utiliser de nom de fonction, il n'existe aucun moyen de fournir une liste d'arguments de modèle explicite pour ces fonctions. modèles." (§14.5.2/5)

Essentiellement, la spécification explicite des paramètres de modèle dans les définitions du constructeur n'est pas prise en charge par la norme C 03.

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