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: