vc6 编译器的问题

hdqqq 2006-01-13 03:11:51
void list_test()
{
list<int> l;
list<int>::iterator lp;
list<int>::const_iterator cp;
list<int>::reverse_iterator rp;
list<int>::const_reverse_iterator crp;
lp = l.begin();
cp = l.begin();
rp = l.rbegin();
crp = l.rbegin();
}
在vc6 sp6 上, 上面的函数居然是编译不过的.
在于 crp = l.rbegin(); 这句
产生的错误是
error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class std::reverse_bidirectional_iterator<class std::list<int,class std::allocator<int> >::iterator,int,
int &,int *,int>' (or there is no acceptable conversion)
Error executing cl.exe.
关键是编译器认为
l.rbegin() 返回的是一个 reverse_iterator, 所以没有办法将 reverse_iterator 转换为 const_reverse_iterator, 即使在stl 的list 中定义了
const_reverse_iterator rbegin() const; 也没有用,真的是一个很奇怪的问题.


...全文
72 点赞 收藏 1
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hdqqq 2006-01-13
上面的问题在vs 2003 上的编译器上可以编译通过,看来 vs 2003 的编译器是比vc6提高了很多.
回复
相关推荐
发帖
非技术类
创建于2007-09-28

1621

社区成员

VC/MFC 非技术类
申请成为版主
帖子事件
创建了帖子
2006-01-13 03:11
社区公告
暂无公告