Бросок операций пересылки может привести к контейнерам STL с помощью соответствующих операций копии
Этот дефект происходит, когда класс явным образом объявляет конструктора перемещения, который пропускает noexcept спецификатор или имеет noexcept спецификатор, аргумент которого оценивает к false. Дефект также происходит, если у явным образом заявленного конструктора перемещения есть бросок ( спецификация исключения (удержанный от использования на C++ 11 и удаленный на C++ 17).type)
Средство проверки не повышает флаг, если конструктор перемещения неявно объявляется или явным образом объявляется как =default.
Если операция пересылки может выдать исключения, некоторые контейнеры STL будут использовать операции копии вместо этого и не получать выигрыши в производительности операции пересылки. Например, реализация std::vector::resize метод использует std::move_if_noexcept и выполняет операцию пересылки для изменения размеров вектора, только если операция пересылки объявляется noexcept.
Добавьте noexcept спецификатор к объявлению конструктора перемещения.
Если конструктор перемещения содержит выражения, которые могут выдать, зафиксировать те выражения. Обнаружить нарушения noexcept спецификация исключения, используйте средство проверки Noexcept function exits with exception.
| Группа: Производительность |
| Язык: C++ |
| Значение по умолчанию: Off |
Синтаксис командной строки:
MOVE_OPERATION_MAY_THROW |
| Удар: низко |