Auto peut-il être utilisé comme argument en C ?
En C , passer auto comme argument à une autre fonction a fait l'objet de débat. Auparavant, cela n’était pas possible en raison de l’ambiguïté dans l’inférence de type. Cependant, C 20 a introduit des changements importants qui permettent cette fonctionnalité.
C 20 : paramètre automatique sans contrainte
C 20 permet d'utiliser auto comme type de paramètre de fonction, connu comme « paramètre automatique sans contrainte ». Cette fonctionnalité offre une flexibilité maximale en permettant de transmettre n'importe quel type sans contraintes.
int function(auto data) { // Do something, no constraints on data }
Cette syntaxe équivaut à définir un modèle de fonction abrégé, qui peut accepter n'importe quel type.
C 20 : Paramètre automatique contraint
En plus des paramètres automatiques sans contrainte, C 20 prend également en charge les paramètres automatiques contraints à l'aide de concepts. Les concepts sont des contraintes qui spécifient les exigences relatives aux types.
void function(const Sortable auto& data) { // Do something that requires data to be Sortable // Assuming there is a concept named Sortable }
Dans cet exemple, le concept Sortable contraint le type de données aux types qui implémentent l'interface Sortable.
Modèles de fonctions abrégées
Des paramètres automatiques sans contrainte peuvent être utilisés pour créer des modèles de fonctions abrégés. Les modèles de fonctions abrégés sont des fonctions modèles qui déduisent leurs arguments de modèle à partir des arguments de la fonction. Cela permet des déclarations de fonctions plus concises et flexibles.
template<typename T> void print(T data) { std::cout << data << std::endl; } int main() { auto data = 42; print(data); // Assumed to print 42 }
Dans cet exemple, la fonction d'impression est un modèle de fonction abrégé qui déduit le type de données en fonction de l'argument fourni.
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!