8
votes

Typedef (alias) d'une classe générique

est-il possible en C ++ de créer un alias de classe de modèle (sans spécifier des paramètres)?

typedef std::map myOwnMap;


1 commentaires

Je pense que le mieux que vous puissiez faire est à l'aide de std :: map; pour importer plan dans l'espace de noms local.


5 Réponses :


7
votes

Cette fonctionnalité sera introduite dans C ++ 0x, appelée template alias. Il ressemblera à ceci: xxx


0 commentaires

14
votes

Template Typedfs ne sont pas pris en charge dans la norme C ++ 03. Il existe des solutions de contournement, cependant: xxx


1 commentaires

@Uncle: Il n'a pas dit que c'était à des fins de longueur et son exemple prend le même nombre de frappes de frappe.



25
votes

in c ++ 98 et c ++ 03 TypeDEF ne peut être utilisé que sur un type complet: xxx

avec c ++ 0x il y a un nouveau Syntaxe brillante à remplacer Typedef : xxx

qui prend également en charge template aliasing: xxx < / Pré>

Ici vous allez :)


0 commentaires

0
votes

pour C ++ inférieur 11 seulement d'une seule façon xxx


3 commentaires

Quel désordre augmente les classes non triviales.


Nah, il y a. Un type imbriqué dans le modèle de classe suivi d'un TypeDEF, tout comme C ++ 98 La mise en œuvre de la bibliothèque standard. Mais il défait le but d'expression d'être court.


Cela ne sera pas compatible avec le modèle d'aliasing et de ne pas mentionner la terrible vue. Ce "hack" n'est qu'un moyen d'écrire du code croisé pour différentes plates-formes



-1
votes

une approche alternative: xxx


2 commentaires

Ce n'est pas équivalent. C'est le sous-classement, vous ne pouvez donc pas passer std :: map pour fonctionner accepter mapper .


Je n'ai pas dit équivalent. Il peut être utilisé dans les compilateurs L'approche ci-dessus n'est pas prise en charge.