考虑以下代码:
#include <vector>
#include <iostream>
int main()
{
std::vector<int> vec{1,2,3,5};
for(auto it=vec.cbegin();it!=vec.cend();++it)
{
std::cout << *it;
// A typo: end instead of cend
if(next(it)!=vec.end()) std::cout << ",";
}
std::cout << "\n";
}
在这里,我引入了一个错字:在比较中我调用vec.end()
而不是vec.cend()
. 这似乎与 gcc 5.2 一样工作。但它实际上是根据标准明确定义的吗?可以iterator
和const_iterator
安全地进行比较吗?