Maison > développement back-end > C++ > Le type d'une expression Lambda C 11 déduit-il avec « auto » est-il un pointeur de fonction ?

Le type d'une expression Lambda C 11 déduit-il avec « auto » est-il un pointeur de fonction ?

Linda Hamilton
Libérer: 2024-12-16 04:20:12
original
754 Les gens l'ont consulté

Is a C  11 Lambda Expression's Type Deduced with

Déduction de type d'expression lambda avec "auto" en C 11

En C 11, les lambdas sont une fonctionnalité puissante qui permet aux programmeurs de définir des noms anonymes fonctions. En utilisant le mot-clé "auto" pour déduire le type d'un lambda, une idée fausse courante surgit selon laquelle les lambdas sont du type pointeur de fonction.

La nature des lambdas

Cependant , cette hypothèse est incorrecte. Le type sous-jacent d'une expression lambda n'est pas explicitement défini. Au lieu de cela, les lambdas sont généralement du sucre syntaxique pour les foncteurs. Un lambda est directement traduit en un objet foncteur, où les éléments entre crochets [] deviennent des paramètres de constructeur et des membres d'objet, tandis que les paramètres entre crochets () deviennent des paramètres pour l'opérateur du foncteur().

Lambda Conversion en pointeurs de fonction

Les Lambdas qui ne capturent aucune variable peuvent en effet être convertis en pointeurs de fonction. Cette conversion est prise en charge par le standard, mais pas par tous les compilateurs (par exemple MSVC2010). Cependant, cette conversion n'implique pas que le type réel du lambda est un pointeur de fonction.

Conclusion

Le type d'une expression lambda déduit avec "auto" est un type non spécifié type de foncteur. Bien que les lambdas qui ne capturent aucune variable puissent être convertis en pointeurs de fonction, il est important de comprendre que cette conversion n'est pas équivalente à leur véritable type sous-jacent.

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