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;
5 Réponses :
Cette fonctionnalité sera introduite dans C ++ 0x, appelée template alias. Il ressemblera à ceci:
Template Typedfs ne sont pas pris en charge dans la norme C ++ 03. Il existe des solutions de contournement, cependant:
@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.
in c ++ 98 et c ++ 03 avec c ++ 0x il y a un nouveau Syntaxe brillante à remplacer qui prend également en charge code> template code> aliasing: p> Ici vous allez :) p> p> TypeDEF code> ne peut être utilisé que sur un type complet: Typedef code>: p>
pour C ++ inférieur 11 seulement d'une seule façon
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
une approche alternative:
Ce n'est pas équivalent. C'est le sous-classement, vous ne pouvez donc pas passer std :: map code> pour fonctionner accepter mapper code>.
Je n'ai pas dit équivalent. Il peut être utilisé dans les compilateurs L'approche ci-dessus n'est pas prise en charge.
Je pense que le mieux que vous puissiez faire est
à l'aide de std :: map; code> pour importerplan code> dans l'espace de noms local.