¿es posible en C++ crear un alias de clase de plantilla (sin especificar parámetros)?Typedef (alias) de una clase genérica
typedef std::map myOwnMap;
no funciona.
Y si no, ¿hay alguna buena razón?
¿es posible en C++ crear un alias de clase de plantilla (sin especificar parámetros)?Typedef (alias) de una clase genérica
typedef std::map myOwnMap;
no funciona.
Y si no, ¿hay alguna buena razón?
En C++ 98 y C++ 03 typedef
solamente puede usarse en un tipo completo:
typedef std::map<int,int> IntToIntMap;
Con C++ 0x hay una nueva brillante la sintaxis para reemplazar typedef
:
using IntToIntMap = std::map<int,int>;
que también apoya 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>;
Aquí tienes :)
Esta característica se introducirá en C++ 0x, llamado alias de plantilla. Se verá así:
template<typename Key, typename Value>
using MyMap = std::map<Key, Value>
Los deletreos de tipo de plantilla no son compatibles con el estándar C++ 03. Hay soluciones, sin embargo:
template<typename T>
struct MyOwnMap {
typedef std::map<std::string, T> Type;
};
MyOwnMap<int>::Type map;
Creo que lo mejor que puedes hacer es 'using std :: map;' para importar 'map' en el espacio de nombres local. –