Код: Выделить всё
#include [*]
#include
#include
int main()
{
auto first = std::list{1, 2, 3};
auto it = first.begin();
auto second = std::move(first);
// Am I guaranteed that 'it' is still valid here?
while (it != second.end()) {
std::println("{}", *it++);
}
}
Существует ли гарантия, что это безопасно, или мне нужно предположить, что первые итераторы признаны недействительными?
Существующие ответы дают противоречивые мнения:
- list::iterator недействителен для перенесенного списка? говорит «Да».
- std::list – аннулируются ли итераторы при перемещении? говорит «Нет».
Подробнее здесь: https://stackoverflow.com/questions/798 ... t-is-moved
Мобильная версия