Maison  >  Article  >  développement back-end  >  Les arguments du modèle peuvent-ils être déduits automatiquement en C à l'aide de « template » ?

Les arguments du modèle peuvent-ils être déduits automatiquement en C à l'aide de « template » ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-05 02:43:01241parcourir

Can Template Arguments Be Deduced Automatically in C   Using `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 pourrions-nous utiliser 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&amp;) {} // do whatever
};

template <typename T>
foo<T> make_foo(const T&amp; 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!

Déclaration:
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