0

使用 Visual Studio 2012 时,以下代码编译没有错误(T 是模板参数):

pair<map<T, int>::iterator, bool> ret;

但是,当我使用 g++ 时,它会抛出错误消息

error: type/value mismatch at argument 1 in template parameter list for template<class _T1, class _T2> struct std::pair

由于某种原因,它不能识别map<T, int>::iterator为一种类型。我应该如何为 g++ 解决这个问题?

4

2 回答 2

5

您需要告诉编译器限定的 idmap<T, int>::iterator确实是一种类型(它可以是静态成员

pair<typename map<T, int>::iterator, bool> ret;
     ^^^^^^^^

似乎VS总是g ++做得更好。

于 2013-04-19T11:09:55.970 回答
2

默认情况下假定从属名称不是类型,除非您明确说明。

使用它来做到这一点:

typename map<T, int>::iterator
于 2013-04-19T11:11:32.100 回答