2011-08-11 3 views
9

Donc, je sais que C++ a une fonctionnalité appelée "template template parameters", où vous pouvez passer un template de classe en tant que paramètre template. Par exemple:Existe-t-il un paramètre de modèle de modèle de fonction?

template <typename T> 
class vector { ... }; 

template <template <typename> class container> // this is a template template parameter 
class foo { ... }; 

... 

foo<vector> f; // pass the vector template itself as template parameter 

Y at-il une chose analogue pour les modèles de fonction? C'est à dire. existe-t-il un moyen de transmettre un modèle de fonction (par exemple, std::make_pair) en tant que paramètre de modèle à une classe?

+0

Quelle serait la syntaxe magique que vous voulez utiliser? – MSN

+0

@MSN: Je cherchais à écrire une fonction 'template void foo (F)' qui peut être appelé comme 'foo (bar)' où 'bar' est un modèle de fonction (par exemple' template void bar (T) '). 'foo' pourrait alors appeler' F' avec des arguments de différents types. Je vais laisser à votre imagination ce qui pourrait aller dans le '' '' :) Cela peut être fait fonctionner si 'bar' est un objet de fonction polymorphe (c'est-à-dire une classe non-template avec un opérateur basé sur un modèle ()), auquel cas le paramètre template de 'foo' serait un paramètre de type ordinaire. [suite dans le commentaire suivant] – HighCommander4

+0

[suite du commentaire précédent] Cependant, je voudrais utiliser un modèle de fonction existant 'bar' sans l'adapter pour être un objet fonction polymorphe. – HighCommander4

Répondre

12

n °

+0

Court et doux –

+1

C'est dommage, je l'aurais trouvé utile ... – HighCommander4

+0

@ HighCommander4: vous pouvez utiliser des modèles de classe et appeler des fonctions membres statiques –

Questions connexes