Maison > développement back-end > C++ > Pourquoi dois-je toujours spécifier des arguments de modèle lors de l'utilisation d'arguments de modèle par défaut en C ?

Pourquoi dois-je toujours spécifier des arguments de modèle lors de l'utilisation d'arguments de modèle par défaut en C ?

Patricia Arquette
Libérer: 2024-11-04 17:21:01
original
332 Les gens l'ont consulté

Why Do I Still Need to Specify Template Arguments When Using Default Template Arguments in C  ?

Comprendre l'utilisation des arguments de modèle par défaut en C

Question :

Malgré la possibilité de définir un modèle de classe avec arguments de modèle par défaut, comme indiqué ci-dessous :

<code class="cpp">template <typename T = int>
class Foo {
};</code>
Copier après la connexion

Pourquoi est-il nécessaire de spécifier des arguments de modèle lorsque instancier la classe dans l'exemple suivant ?

<code class="cpp">Foo<int> me;</code>
Copier après la connexion

Réponse :

Contrairement à ce que suggère la question, il n'est pas nécessaire de spécifier explicitement les arguments du modèle lors de la définition d'un modèle de classe avec les arguments de modèle par défaut. À partir de C 17, le code suivant est valide :

<code class="cpp">Foo me;</code>
Copier après la connexion

Avant C 17, cependant, la syntaxe suivante était requise :

<code class="cpp">Foo<> me;</code>
Copier après la connexion

Cela signifie que les arguments du modèle doivent être présents même s'ils sont vides. Ce comportement est analogue à l'appel d'une fonction avec un seul argument par défaut, où foo() et foo sans arguments sont des expressions valides, mais seule la première appellera la fonction.

En introduisant les arguments de modèle par défaut, C 11 a facilité le travail avec les modèles de classe en fournissant un moyen de définir des valeurs par défaut pour les paramètres du modèle. De plus, comme le démontre le changement de comportement entre C 11 et C 17, cette syntaxe a évolué au fil du temps pour améliorer la convivialité.

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