возможно ли в C ++ создать псевдоним класса шаблона (без указания параметров)?
typedef std::map myOwnMap;
не работает.
И если нет, есть ли какая-то польза причина?
В C++98 и C++03 typedef
может использоваться только для полного типа:
typedef std::map<int,int> IntToIntMap;
В C++0x появился новый блестящий синтаксис для замены typedef
:
using IntToIntMap = std::map<int,int>;
который также поддерживает шаблон
псевдоним:
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>
Определения типов шаблонов не поддерживаются в стандарте C++03. Однако есть обходные пути:
template<typename T>
struct MyOwnMap {
typedef std::map<std::string, T> Type;
};
MyOwnMap<int>::Type map;