Мы используем файлы cookie
Мы используем файлы cookie для улучшения работы сайта и предоставления вам персонализированного опыта. Правила использования файлов cookie можно найти в нашей политике конфиденциальности
Семантика перемещения предполагает отсутствие исключений, поскольку при перемещении ресурсы (память, дескрипторы) передаются от одного объекта к другому, и исходный объект остается в допустимом, но неопределенном состоянии. Если оператор перемещения сгенерирует исключение в середине процесса перемещения, это может привести к следующему:
Гарантия noexcept
для оператора перемещения сообщает компилятору, что этот оператор гарантированно не выбросит исключение. Эта информация используется компилятором в алгоритмах стандартной библиотеки, например, при изменении размера std::vector
.
Когда std::vector
нужно увеличить свою емкость, он выделяет новый буфер памяти и перемещает или копирует существующие элементы в новый буфер.
Если оператор перемещающего присваивания для типа элементов помечен как noexcept
, std::vector
выбирает перемещение. Если перемещение произойдет успешно для всех элементов, старый буфер освобождается.
Если один из операторов перемещения бросит исключение в процессе перемещения, std::vector
сможет безопасно откатить оп
Семантика перемещения предполагает отсутствие исключений, поскольку при перемещении ресурсы (память, дескрипторы) передаются от одного объекта к другому, и исходный объект остается в допустимом, но неопределенном состоянии. Если оператор перемещения сгенерирует исключение в середине процесса перемещения, это может привести к следующему:
Гарантия noexcept
для оператора перемещения сообщает компилятору, что этот оператор гарантированно не выбросит исключение. Эта информация используется компилятором в алгоритмах стандартной библиотеки, например, при изменении размера std::vector
.
Когда std::vector
нужно увеличить свою емкость, он выделяет новый буфер памяти и перемещает или копирует существующие элементы в новый буфер.
Если оператор перемещающего присваивания для типа элементов помечен как noexcept
, std::vector
выбирает перемещение. Если перемещение произойдет успешно для всех элементов, старый буфер освобождается.
Если один из операторов перемещения бросит исключение в процессе перемещения, std::vector
сможет безопасно откатить оп
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.