Перемещение строки в сеттере всё равно копирует данные
class Document {
public:
void setBody(const std::string body) {
body_ = std::move(body);
}
private:
std::string body_;
};
Тела документов по 5–20 МБ. Профайлер показывает memcpy внутри setBody, хотя вызывают её как doc.setBody(std::move(text)). Где лишнее копирование?
- Из const-объекта std::move даёт копирование
- std::move не работает с параметром функции
- std::string не поддерживает перемещение
- Перемещать можно только в конструкторе
