Consider the following code:
#include #include int main() { std::vector vec{1,2,3,5}; for(auto it=vec.cbe
See §23.2.1, Table 96:
X::iterator
[...]
any iterator category that meets the forward iterator requirements. convertible to X::const_iterator
any iterator category that meets the forward iterator requirements.
convertible to X::const_iterator
X::const_iterator
So, yes, it is well-defined.