"Сингулярный итератор" определяется как an:
которые не связаны ни с какой последовательностью. Нулевой указатель, а также построенный по умолчанию указатель (имеющий неопределенное значение) является сингулярным
Мой вопрос 1: Является ли построенный по умолчанию итератор "сингулярным итератором"?
Во-вторых, я сказал здесь, что:
Результаты большинства выражений undefined для сингулярных значений; единственными исключениями являются уничтожение итератора, который содержит сингулярное значение, назначение несингулярного значения итератору, который содержит сингулярное значение, и для итераторов, удовлетворяющих требованиям DefaultConstructible, с использованием инициализированного значения итератора в качестве источника операции копирования или перемещения.
Вопрос 2: Работает ли результат с undefined "undefined Поведение? Казалось бы, если бы это было так, undefined Поведение:
void* foo = nullptr;
auto bar = foo;
Моя более глубокая мотивация для запроса этого вопроса в том случае, когда у меня есть такая структура:
struct Foo {
vector<int*>::const_iterator;
};
Я хочу знать, если это поведение undefined для этого, где assigned
- это построенное значение Foo
object:
Foo unasigned;
assigned = unassigned;
Если ответы на вопросы 1 и 2 являются "да", то, вызывая оператор присваивания по умолчанию, я представляю поведение undefined:(