Как и предлагаемая библиотечная функция tribuly_relocate_at сама по себе?
Код: Выделить всё
template
T* trivially_relocate_at(T* dst, T* src);
Проблема: где волшебный соус? Эта сигнатура функции не говорит о том, что она эффективно разрушает объект в src, или обратная проблема, что она эффективно создает объект в dst.
Я подозреваю, что ответ отрицательный: несколько примеров, которые я нашел, избегают этого, выполняя ручное управление памятью с помощью Place-new и std::destroy_at.
Причина вопроса: Я хотел бы предложить то, чего, кажется, не хватает: два новых квалификатора указателя выражать отдачу и принятие собственности. Если вы извините мое повторное использование ключевых слов new и delete (это не обязательно так):
Код: Выделить всё
template
T* trivially_relocate_at(new T* dst, delete T* src);
Подробнее здесь: https://stackoverflow.com/questions/798 ... -semantics
Мобильная версия