Mot clé automatique dans les paramètres du modèle : évaluation de la faisabilité et des limitations actuelles
Bien que C permette une instanciation de type exhaustive dans les paramètres du modèle, la question reste de savoir si les paramètres du modèle peuvent être explicitement déclarés à l'aide du mot-clé "auto". Cela améliorerait considérablement la commodité au moment de la compilation, éliminant le besoin de spécifier manuellement les types d'arguments, en particulier pour les types complexes tels que les fonctions de pointeur vers un membre.
Limitations actuelles
Malgré l'attrait d'une telle fonctionnalité, elle n'est actuellement pas possible en langage C. Alors que l'exemple de code fourni tente de définir un paramètre de modèle à l'aide de « auto », le compilateur applique strictement la syntaxe conventionnelle, exigeant des déclarations de type explicites dans les paramètres de modèle.
Solutions de contournement
Bien qu'une solution directe à cette limitation reste insaisissable, il existe des solutions de contournement viables pour simplifier la transmission des arguments :
<code class="cpp">#define AUTO_ARG(x) decltype(x), x</code>
Cette macro peut alors être utilisée comme suit :
<code class="cpp">f.bar<AUTO_ARG(5)>(); f.bar<AUTO_ARG(&Baz::bang)>();</code>
<code class="cpp">template <typename T> struct foo { foo(const T& x) {} // do whatever }; template <typename T> foo<T> make_foo(const T& x) { return foo<T>(x); }</code>
Cette fonction génératrice permet une transmission d'arguments simplifiée :
<code class="cpp">make_foo(5); make_foo(&Baz::bang);</code>
Considérations futures
Bien que ces solutions de contournement fournissent des solutions pratiques, l'inclusion d'un mot-clé "auto" dans les paramètres du modèle pourrait toujours être considérée comme une amélioration potentielle pour les futures versions C.
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!