Требуется ли, чтобы конструкторы перемещения не были исключением?
Я читал некоторые противоречащие статьи в отношении того, разрешено ли перемещать конструкторы/присваивание или нет.
Поэтому я хотел бы спросить, разрешено ли перемещать конструкторы/назначения в финальный С++ 11?
Ответ 1
Можно ли вообще переместить конструкторы перемещения? Да. Должны ли они? Нет.
В общем, ничто из того, что вы делаете внутри них, должно быть тем, что может бросить. Вы не должны выделять память, вызывать другой код или что-то в этом роде. Единственная причина написать конструктор перемещения - это скрыться от других указателей памяти и ссылок на объекты. Вы должны копировать несколько базовых типов и обнулять значения в другом объекте. Эти вещи не должны бросать.
Итак, пока это разрешено, это не очень хорошая идея. Если вы это сделаете, переосмыслите, что вы делаете в своих операциях перемещения.