2010-04-28 6 views
3

Y at-il moyen direct de faire ce qui suit:C++ argument template "retardé"

template <class> 
struct f {}; 

template < class F > 
void function() { 
    F<int>(); //for example 
    // ? F template <int>(); 
} 

function <f>(); 

Je solution en utilisant la classe supplémentaire autour struct modèle. Je me demande s'il est possible de le faire directement.

Merci

+1

Je ne comprends pas l'intention derrière cela. Qu'essayez-vous d'accomplir? – sharptooth

+0

@sharp instancier le modèle dans la fonction (ci-dessus est juste un exemple) – Anycorn

Répondre

7

La syntaxe correcte pour les paramètres du modèle-modèle est la suivante

template <class> struct f {}; 

template < template <class> class F > 
void function() { 
    F<int>(); //for example 
} 

...  
function <f>() 
+0

Je sais que j'ai déjà vu cette syntaxe. maintenant je sais comment l'utiliser. spasibo – Anycorn

+0

Wow! Jamais vu le modèle sans nommer la classe. Où puis-je lire plus à ce sujet? – sharptooth

+4

@sharptooth: Il n'y a pas grand chose à lire ici. Tout comme avec les paramètres de fonction ordinaires, si vous n'utilisez pas le paramètre template, vous n'avez pas à le nommer. – AnT

Questions connexes