è possibile in C++ creare un alias della classe template (senza specificare i parametri)?Typedef (alias) di una classe generica
typedef std::map myOwnMap;
non funziona.
E se no, c'è qualche buona ragione?
è possibile in C++ creare un alias della classe template (senza specificare i parametri)?Typedef (alias) di una classe generica
typedef std::map myOwnMap;
non funziona.
E se no, c'è qualche buona ragione?
In C++ 98 e C++ 03 typedef
può essere utilizzato solo su un tipo completo:
typedef std::map<int,int> IntToIntMap;
Con C++ 0x c'è un nuovo lucido sintassi per sostituire typedef
:
using IntToIntMap = std::map<int,int>;
che supporta anche template
aliasing:
template <
typename Key,
typename Value,
typename Comparator = std::less<Key>,
typename Allocator = std::allocator< std::pair<Key,Value> >
>
using myOwnMap = std::map<Key,Value,Comparator,Allocator>;
Qui vai :)
Questa funzione verrà introdotta in C++ 0x, chiamato alias del modello. Sembrerà così:
template<typename Key, typename Value>
using MyMap = std::map<Key, Value>
I typedef di modello non sono supportati nello standard C++ 03. Ci sono soluzioni alternative, comunque:
template<typename T>
struct MyOwnMap {
typedef std::map<std::string, T> Type;
};
MyOwnMap<int>::Type map;
Penso che il meglio che puoi fare sia usare "std :: map;" per importare 'map' nello spazio dei nomi locale. –