我想要一个迭代器的集合(列表,向量,映射等),但代码不起作用:
template <class T>
class A
{
std::list<std::unordered_map<int, T>::iterator> l; //doesn't compile
std::unordered_map<int, std::vector<T>::iterator> um; //doesn't compile
std::vector<std::list<T>::iterator> v; //doesn't compile either
};
答案 0 :(得分:1)
iterator
是dependent name,您需要使用typename
关键字对其进行限定:
std::list<typename std::unordered_map<int, T>::iterator> l;
^^^^^^^^
std::unordered_map<int, typename std::vector<T>::iterator> um;
^^^^^^^^
std::vector<typename std::list<T>::iterator> v;
^^^^^^^^