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!