Ошибка компиляции шаблона std :: map :: const_iterator

У меня есть шаблон класса, который содержитstd::map который хранит указатели на T, который отказывается компилировать:

template <class T>
class Foo
{
public:
  // The following line won't compile
  std::map<int, T*>::const_iterator begin() const { return items.begin(); }

private:
  std::map<int, T*> items;
};

gcc выдает мне следующую ошибку:

error: type 'std::map<int, T*, std::less<int>, std::allocator<std::pair<const int, T*> > >' is not derived from type 'Foo<T>'

Аналогично, следующее также отказывается компилировать:

typedef std::map<int, T*>::const_iterator ItemIterator;

Тем не менее, использование карты, которая не содержит тип шаблона, работает нормально, например:

template <class T>
class Foo
{
public:
  // This is OK
  std::map<int, std::string>::const_iterator begin() const { return items.begin(); }

private:
  std::map<int, std::string> items;
};

Я предполагаю, что это связано с шаблонами и напрашивается вопрос - как я могу вернутьconst_iterator к моей карте?

Ответы на вопрос(3)

Ваш ответ на вопрос