Types supérieurs avec C ++

Cette question s’adresse aux personnes qui connaissent à la fois Haskell (ou tout autre langage fonctionnel prenant en charge les types supérieurs) et C ++ …

Est-il possible de modéliser des types similaires à l’aide de modèles C ++? Si oui, alors comment?

MODIFIER :

De cette présentation de Tony Morris:

Polymorphisme d’ordre supérieur:

Exemple :

Pseudo-Java avec une notation inventée pour le polymorphism d’ordre supérieur

 interface Transformer { Y transform(X x); } interface Monad { // M :: * -> *  M pure(A a);  M bind(Transformer<A, M> t, M a); } 

Paramètres du template-template?

 template  

N’est-ce pas généralement un modèle normal un type plus élevé? Par exemple, std::vector prend un paramètre de type pour créer un type réel tel que std::vector , il a donc un type * -> * .