Возможно ли в C++ создать псевдоним класса шаблона (без указания параметров)?Typedef (псевдоним) общего класса
typedef std::map myOwnMap;
не работает.
А если нет, есть ли веская причина?
Возможно ли в C++ создать псевдоним класса шаблона (без указания параметров)?Typedef (псевдоним) общего класса
typedef std::map myOwnMap;
не работает.
А если нет, есть ли веская причина?
В C++ 98 и 03 typedef
C++ может быть использован только на полный тип:
typedef std::map<int,int> IntToIntMap;
В C++ 0x есть новый блестящий синтаксис для замены typedef
:
using IntToIntMap = std::map<int,int>;
который также поддерживает template
ступенчатость:
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>;
Здесь вы идете :)
Эта функция будет введена в C++ 0x, называемом псевдонимом шаблона. Это будет выглядеть так:
template<typename Key, typename Value>
using MyMap = std::map<Key, Value>
Шаблоны typedefs не поддерживаются стандартом C++ 03. Есть обходные пути, однако:
template<typename T>
struct MyOwnMap {
typedef std::map<std::string, T> Type;
};
MyOwnMap<int>::Type map;
Я думаю, что лучшее, что вы можете сделать, это «использование std :: map;» для импорта «map» в локальное пространство имен. –