@Mercury13
Программист на «си с крестами» и не только

Требуется ли Object(std::wstring&&) с точки зрения оптимизации?

У нас есть такой код.
class Object
{
public:
  Object() = default;
  Object(std::wstring x) : value(std::move(x)) {}    // интересный механизм, предложенный статическим анализатором clang
  Object(std::wstring&& x) : value(std::move(x)) {}     // НУЖНО ЛИ?
private:
  std::wstring value;
};

Нужен ли с точки зрения оптимизации третий конструктор? Или без него система поймёт, что временный объект можно распотрошить std::move’ом?
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
terrier
@terrier
Нет, не нужен. Второй конструктор покрывает оба случая -
- приходит rvalue - делаем один move ( без копии )
- приходит lvalue - делаем копирование + move
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы