контейнеры typedef std? - PullRequest
       6

контейнеры typedef std?

3 голосов
/ 18 февраля 2009

Я хотел сделать

typedef deque type; //error, use of class template requires template argument list
type<int> container_;

Но эта ошибка мешает мне. Как мне это сделать?

Ответы [ 5 ]

15 голосов
/ 18 февраля 2009

Вы не можете (до C ++ 0x). Но это можно эмулировать с помощью:

template<typename T>
struct ContainerOf
{
  typedef std::deque<T> type;
};

используется как:

ContainerOf<int>::type container_;
8 голосов
/ 18 февраля 2009

deque не является типом. Это шаблон, используемый для генерации типа при наличии аргумента.

 deque<int> 

это тип, так что вы можете сделать

 typedef deque<int> container_
2 голосов
/ 18 февраля 2009

Нет, C ++ еще не поддерживает этот тип typedef. Можно конечно сказать:

typedef std::deque <int> IntDeque;
1 голос
/ 18 февраля 2009

Вы столкнулись с ошибкой, потому что не указали int в deque.

Но учтите, что: Шаблон typedef является принятой функцией C ++ 0x. Попробуй с последним g ++

0 голосов
/ 18 февраля 2009

Как вы могли бы сделать это:

#define type deque

Но это имеет несколько недостатков.

...