ОК, так что я все продаю с копией и заменой идиома и думаю, что в основном знаю, как это реализовать.
Однако, или кодовая база использует Класс CString MFC как строка, и это не изменится.
Поскольку swap
должно (должно быть ???) быть nothrow, я не могу сделать
std::swap(this->my_cstring, rhs.my_cstring);
, поскольку это создаст временный объект CString, который может выбрасывать.(Плюс это неэффективно.)
Так, где я остался?Должен ли я добавить попробовать?Должен ли я на самом деле допустить это (ну, очень редко) состояние нехватки памяти, чтобы вызвать исключение и вызвать сбой подкачки?
Глядя на реализацию CStrings, не кажется, что есть член или функция, которая допускает обмен...