Рассмотрим следующий код:
#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
?