Typedef (псевдоним) универсального класса

возможно ли в C ++ создать псевдоним класса шаблона (без указания параметров)?

typedef std::map myOwnMap;

не работает.

И если нет, есть ли какая-то польза причина?

6
задан nothrow 28 August 2010 в 14:10
поделиться

3 ответа

В 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>;

Вот так :)

22
ответ дан 8 December 2019 в 02:14
поделиться

Эта функция будет представлена ​​в C++0x и называется псевдонимом шаблона. Это будет выглядеть так:

template<typename Key, typename Value>
using MyMap = std::map<Key, Value>
7
ответ дан 8 December 2019 в 02:14
поделиться

Определения типов шаблонов не поддерживаются в стандарте C++03. Однако есть обходные пути:

template<typename T>
struct MyOwnMap {
  typedef std::map<std::string, T> Type;
};

MyOwnMap<int>::Type map;
14
ответ дан 8 December 2019 в 02:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: