Accès aux types d'arguments de pointeur de fonction dans la classe de modèle variadique
Ce problème découle d'une requête précédente concernant la création d'un foncteur générique pour les fonctions avec un argument arbitraire listes. La classe de foncteurs donnée, Foo, permet d'invoquer un pointeur de fonction avec n'importe quel nombre d'arguments. Cependant, la tâche consiste maintenant à extraire les types d'arguments du pointeur de fonction dans le constructeur Foo.
Lors de la définition de la classe Foo, les types d'arguments sont encapsulés sous la forme ARGS... dans la déclaration du pointeur de fonction du constructeur. Bien que les valeurs des arguments ne soient pas disponibles au moment de la construction, leurs types sont accessibles dans le pointeur de fonction lui-même.
Pour découvrir ces types d'arguments, on peut exploiter la classe function_traits :
template
struct function_traits;
template>
{
// Number of arguments
static const size_t nargs = sizeof...(Args);
// Return type
typedef R result_type;
// Argument types at specified index
template <size_t i>
struct arg
{
typedef typename std::tuple_element<i, std::tuple<Args...>>::type type;
};
};
Dans le constructeur Foo, on peut accéder à ces types d'arguments en utilisant function_traits comme suit :
templateEn utilisant function_traits, les types d'arguments peuvent être extraits et exploités au sein de la classe Foo, permettant des opérations sophistiquées basées sur la signature de la fonction.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3