Maison >développement back-end >C++ >Comment instancier un modèle de classe avec des arguments de modèle par défaut en C ?

Comment instancier un modèle de classe avec des arguments de modèle par défaut en C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-04 08:01:30422parcourir

How to Instantiate a Class Template with Default Template Arguments in C  ?

Spécification des arguments de modèle par défaut lors de l'instanciation d'un modèle de classe avec des arguments de modèle par défaut

C 11 a introduit les arguments de modèle par défaut pour fournir un moyen concis et pratique de spécifiez les arguments du modèle lors de l'instanciation d'un modèle de classe. Cependant, spécifier des arguments pour un modèle de classe avec des arguments de modèle par défaut peut prêter à confusion.

On peut s'attendre à ce que la simple déclaration d'une instance du modèle de classe, telle que Foo me;, suffise. Cependant, dans ce cas, le compilateur exigera que les arguments du modèle soient explicitement spécifiés.

La bonne façon d'instancier un modèle de classe avec des arguments de modèle par défaut est de laisser la liste d'arguments du modèle vide. Autrement dit, au lieu de Foo me;, le code devrait être Foo<> moi;. Cela indique au compilateur que les arguments du modèle par défaut doivent être utilisés pour l'instanciation de la classe.

Cette syntaxe est cohérente avec la convention d'appel d'une fonction avec des arguments par défaut. Par exemple, une fonction foo avec un seul argument par défaut peut être appelée sans spécifier l'argument comme foo(). Cependant, la syntaxe des arguments doit toujours être présente.

Remarque : Depuis C 17, il est possible de déclarer une instance d'un modèle de classe sans spécifier d'arguments de modèle, comme dans Foo me ; . Ce comportement s'écarte des versions antérieures de C et doit être utilisé avec prudence, car il peut ne pas être pris en charge par tous les compilateurs.

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