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!