Why am I getting a type value mismatch?
本问题已经有最佳答案,请猛点这里访问。
我试图在我的C++应用程序中生成一个迭代器向量:
1 | std::vector<std::list<std::shared_ptr<SelfDefinedType>>::iterator> edge_iters; |
我必须承认这个组织有点复杂,但是模板有一个层次结构。
我得到下面的编译时错误,用C++ 11编译。
1 2 | App.hpp:563:48: error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Alloc> class std::vector’ |
号
这是什么意思?它似乎将
我试图在开始和结束括号中添加空格,但没有用。我还尝试使用typedef来抑制编译错误,但这不起作用。
您应该指定
这里,
解析器假定迭代器不是一个类型,除非用typename显式地告诉它。
要解决此错误(请注意类型名):
1 | std::vector<typename std::list<std::shared_ptr<SelfDefinedType>>::iterator> edge_iters; |
我不确定这是否是问题所在,但您的编译器可以将其理解为operator>>。
尝试std::vector