Maison >développement back-end >C++ >Les fonctions C peuvent-elles utiliser « auto » comme type d'argument ?

Les fonctions C peuvent-elles utiliser « auto » comme type d'argument ?

DDD
DDDoriginal
2024-11-17 06:12:03741parcourir

Can C   Functions Utilize

Passer Auto comme argument en C

Il existe une méthode pour utiliser le mot-clé "auto" comme argument lors du passage à un autre fonction. C'est-à-dire que vous pouvez définir une fonction comme celle-ci :

int function(auto data)
{
    // Does something
}

Introduction par C 20 de Auto en tant que type de paramètre de fonction

C 20 permet l'utilisation de "auto" comme type de paramètre de fonction. Prenons l'exemple de l'extrait de code suivant :

int function(auto data) {
   // Do something, there are no constraints on data
}

Modèles de fonctions abrégées

De plus, "auto" peut être utilisé comme modèle de fonction abrégé. Il s'agit d'une instance spécialisée d'une contrainte de type non contraignante ou, en d'autres termes, d'un « paramètre automatique sans contrainte ». Un « paramètre automatique contraint », en revanche, emploierait des concepts et apparaîtrait comme suit :

void function(const Sortable auto& data) {
    // Do something that requires data to be Sortable
    // Assuming there is a concept named Sortable
}

Explication de la spécification C

La spécification C définit "spécificateurs de type d'espace réservé" comme suit :

type-constraint<sub>opt</sub> auto

type-constraint<sub>opt</sub> decltype ( auto )

Ces spécificateurs de type d'espace réservé désignent un type d'espace réservé qui est soumis au remplacement ultérieur par déduction d'un initialiseur. Lorsqu'il est utilisé dans le "decl-specifier-seq" d'une déclaration de fonction ou d'une expression lambda, un spécificateur de type d'espace réservé de la forme "type-constraintopt auto" indique que la fonction est un modèle de fonction abrégé (selon 9.3.3.5).

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