Правило не встраивать std :: string в исключения все еще выполняется с конструкторами перемещения?
Некоторое время назад я слышал, что я не должен создавать классы исключений, которые будут иметь поляstd::string
тип. Это то чтоСайт Boost говорит, Обоснование заключается в том, чтоstd::string
Конструктор копирования может выдать исключение, если выделение памяти завершилось неудачно, и если исключение выдается до того, как обработано текущее исключение, программа завершается.
Однако, это все еще держится в мире конструкторов движения? Не будет ли использоваться конструктор перемещения вместо конструктора копирования при создании исключения? Правильно ли я понимаю, что в C ++ 11 распределение памяти не происходит, исключений не существует, иstd::string
сейчас абсолютно нормально в классах исключений?