type/value mismatch in template C++ class declaration
本问题已经有最佳答案,请猛点这里访问。
我尝试使用GCC4.2在Linux上编译以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <map> #include <list> template<typename T> class A { ... private: std::map<const T, std::list<std::pair<T, long int> >::iterator> lookup_map_; std::list<std::pair<T, long int> > order_list_; }; |
当我编译这个类时,我从GCC收到以下消息:
1 2 3 | error: type/value mismatch at argument 2 in template parameter list for ‘template<class _Key, class _Tp, class _Compare, class _Alloc> class std::map’ error: expected a type, got ‘std::list<std::pair<const T, long int>,std::allocator<std::pair<const T, long int> > >::iterator’ error: template argument 4 is invalid |
我已经删除了文件名和行号,但它们都是指声明映射的行。
当我用int或某种具体类型替换这些表达式中的对时,它编译得很好。有人能告诉我我做错了什么吗?
您需要在
编辑:如果没有
您的代码需要一个"typename"关键字。
1 | std::map<const T, typename std::list<std::pair<T, long int> >::iterator> lookup_map_; |