Maison > Article > développement back-end > Les arguments du modèle peuvent-ils être déduits automatiquement en C à l'aide de « template » ?
Automatisation de la déduction d'arguments de modèle avec le modèle
Question :
Modèle Can les arguments doivent-ils être transmis au moment de la compilation sans spécifier explicitement leurs types ? Par exemple, au lieu de template
Réponse :
L'approche mentionnée n'est pas possible en C . L'alternative la plus proche consiste à utiliser des macros :
<code class="cpp">#define AUTO_ARG(x) decltype(x), x f.bar<AUTO_ARG(5)>(); f.bar<AUTO_ARG(&Baz::bang)>();</code>
Une approche alternative consiste à utiliser une fonction génératrice qui déduit l'argument du modèle :
<code class="cpp">template <typename T> struct foo { foo(const T&) {} // do whatever }; template <typename T> foo<T> make_foo(const T& x) { return foo<T>(x); }</code>
Maintenant, au lieu d'écrire :
<code class="cpp">foo<int>(5);</code>
Nous pouvons simplement écrire :
<code class="cpp">make_foo(5);</code>
Cette méthode automatise la déduction des arguments du modèle, offrant un moyen plus pratique de transmettre les arguments.
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!