est-il possible en C++ de créer un alias de classe template (sans spécifier de paramètres)?Typedef (alias) d'une classe générique
typedef std::map myOwnMap;
ne fonctionne pas.
Et si non, y at-il une bonne raison?
est-il possible en C++ de créer un alias de classe template (sans spécifier de paramètres)?Typedef (alias) d'une classe générique
typedef std::map myOwnMap;
ne fonctionne pas.
Et si non, y at-il une bonne raison?
En C++ 98 et 03 typedef
C++ ne peuvent être utilisés sur un type complet:
typedef std::map<int,int> IntToIntMap;
Avec C++ 0x il y a un nouveau brillant syntaxe pour remplacer typedef
:
using IntToIntMap = std::map<int,int>;
qui supporte également template
aliasing:
Cette fonctionnalité sera introduite en C++ 0x, appelée alias de modèle. Il ressemblera à ceci:
template<typename Key, typename Value>
using MyMap = std::map<Key, Value>
Les typedesfs de modèle ne sont pas pris en charge dans la norme C++ 03. Il y a des solutions de contournement, cependant:
template<typename T>
struct MyOwnMap {
typedef std::map<std::string, T> Type;
};
MyOwnMap<int>::Type map;
Je pense que le mieux que vous pouvez faire est d'utiliser 'std :: map;' pour importer 'map' dans l'espace de noms local. –