Este é um iterador singular e, em caso afirmativo, posso compará-lo a outro?

Eu sempre pensei que um iterador "singular" era aquele que foi inicializado por padrão, e estes poderiam servir como comparáveissentinela valores das sortes:

typedef std::vector<Elem>::iterator I;
I start = I();

std::vector<Elem> container = foo();

for (I it = container.begin(), end = container.end(); it != end; ++it) {
   if ((start == I()) && bar(it)) {
      // Does something only the first time bar(it) is satisfied

      // ...

      start = it;
   }
}

Masesta resposta sugere não apenas que minha definição de "singular" está errada, mas também que minha comparação acima é totalmente ilegal.

É isso?

questionAnswers(1)

yourAnswerToTheQuestion