Maison > Article > développement back-end > Comment récupérer des types d’arguments de fonction dans une classe de modèle variadique ?
Récupération des types d'arguments de fonction dans une classe de modèle variadique
La classe de foncteurs spécifiée, Foo, fournit un moyen d'invoquer des fonctions avec des listes d'arguments arbitraires . Cependant, déterminer les types d'arguments au sein du constructeur présente un défi.
Pour surmonter ce problème, vous pouvez utiliser la classe function_traits comme suit :
<code class="cpp">template<typename T> struct function_traits; template<typename R, typename ...Args> struct function_traits<std::function<R(Args...)>> { static const size_t nargs = sizeof...(Args); typedef R result_type; template <size_t i> struct arg { typedef typename std::tuple_element<i, std::tuple<Args...>>::type type; }; };</code>
Dans la classe Foo, vous pouvez utiliser function_traits pour obtenir les informations sur le type d'argument :
<code class="cpp">class Foo { std::function<void(ARGS...)> m_f; public: using result_type = typename function_traits<decltype(m_f)>::result_type; using arg0_type = typename function_traits<decltype(m_f)>::arg<0>::type; // ... Additional argument types as needed };</code>
Cette approche vous permet d'exploiter le système de types pour accéder et manipuler les types d'arguments de fonction de manière générique et sécurisée.
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!