【发布时间】:2015-05-13 16:30:34
【问题描述】:
我有这个小 sn-p,它在 GCC 上表现得非常好(如预期的那样)。
#include <deque>
#include <iostream>
#include <algorithm>
std::deque<int> values = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int main()
{
typedef std::deque<int>::iterator buf_iterator;
buf_iterator itr = values.begin() + 1;
const int K = 5;
buf_iterator i = std::max(itr - K, values.begin());
int pos = i - values.begin();
std::cout << *i << std::endl;
return 0;
}
但是,在 MSVC 2013 和 2015 上运行会产生调试断言:“deque iterator is not dereferencable”。在这种情况下,pos 的值是 -4,而预期为零。
- 谁是对的,GCC 还是 Visual Studio?
- 为什么?
【问题讨论】:
标签: c++ visual-c++ gcc iterator deque