Maison > développement back-end > C++ > Comment puis-je déterminer les types de paramètres et de retour d'une expression C Lambda ?

Comment puis-je déterminer les types de paramètres et de retour d'une expression C Lambda ?

Barbara Streisand
Libérer: 2024-12-31 07:09:09
original
695 Les gens l'ont consulté

How Can I Determine the Parameter and Return Types of a C   Lambda Expression?

Détermination des types de paramètres et de retour des expressions Lambda

Étant donné une expression lambda, il peut être difficile de déterminer ses paramètres et ses types de retour. Cet article explique comment extraire ces informations à l'aide de traits lambda.

En C 11, les expressions lambda sont introduites et peuvent être utilisées dans divers scénarios. Un cas d'utilisation potentiel consiste à transmettre des lambdas comme arguments aux modèles de fonction, mais pour réussir cela, il est crucial de connaître le paramètre lambda et les types de retour.

Au départ, les tentatives d'utilisation std::function pour représenter les expressions lambda rencontrées erreurs. Cependant, l'introduction de lambda_traits fournit une solution plus robuste. En utilisant le decltype de l'opérateur lambda (), lambda_traits peut déterminer les types de paramètres.

L'extrait de code suivant illustre comment les traits lambda peuvent être utilisés pour extraire des informations de type à partir d'une expression lambda :

template <typename TLambda>
void f(TLambda lambda)
{
   typedef typename lambda_traits<TLambda>::param_type  P;
   typedef typename lambda_traits<TLambda>::return_type R;

   std::function<R(P)> fun = lambda; // Construct the std::function object
}
Copier après la connexion

Dans cet exemple de scénario, le modèle de fonction f accepte un lambda comme argument et utilise les traits lambda pour déduire son paramètre et renvoyer types.

Pour les lambdas génériques qui ne spécifient pas de types explicites, comme [](auto x) {}, cette approche ne fonctionnera pas. Néanmoins, les traits lambda s'avèrent efficaces pour les lambdas avec des paramètres et des types de retour définis.

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