uordnung eines singulären Iterato

Ein "Singular Iterator" istdefiniert al ein

Iteratoren, die keiner Sequenz zugeordnet sind. Ein Nullzeiger sowie ein standardmäßig erstellter Zeiger (der einen unbestimmten Wert enthält) ist singular

Meine Frage1 wäre:Ist ein standardmäßig erstellter Iterator als "Singular Iterator" zu betrachten?

weitens war ich hier gesagt Das

Die Ergebnisse der meisten Ausdrücke sind für einzelne Werte undefiniert. Die einzigen Ausnahmen bestehen darin, einen Iterator zu zerstören, der einen Singularwert enthält, einem Iterator, der einen Singularwert enthält, einen nicht-Singularwert zuzuweisen und für Iteratoren, die die DefaultConstructible-Anforderungen erfüllen, einen durch Werte initialisierten Iterator als Quelle für zu verwenden Eine Kopier- oder Verschiebeoperation.

Frage2 ist: Stellt die Arbeit mit einem Ergebnis, das "undefiniert" ist, ein undefiniertes Verhalten dar? Es scheint, dass wenn das wahr wäre, dies Undefiniertes Verhalten wäre:

void* foo = nullptr;
auto bar = foo;

Abers läuft g.

Meine tiefere Motivation, diese Frage zu stellen, ist in dem Fall, in dem ich eine Struktur wie diese habe:

struct Foo {
    vector<int*>::const_iterator;
};

Ich möchte wissen, ob es undefiniertes Verhalten ist, wennassigned ist ein Wert konstruiertFoo Objekt

Foo unasigned;

assigned = unassigned;

Wenn die Antworten auf Fragen1 und2 sind "ja", dann durch Aufrufen des Standardzuweisungsoperators führe ich ein undefiniertes Verhalten ein:

Antworten auf die Frage(4)

Ihre Antwort auf die Frage