перемещение может быть настолько эффективным, насколько уже есть копия.

вая высокое качество современных компиляторов в отношении оптимизации возвращаемого значения (как RVO, так и NRVO), мне было интересно, для какой сложности класса имеет смысл начинать добавлять конструкторы перемещения и операторы присваивания перемещения.

Например, для этогоreally_trivial Класс, я просто предполагаю, что семантика перемещения не может предложить ничего больше, чем RVO и NRVO уже делает при копировании вокруг его экземпляров:

class really_trivial
{
    int first_;
    int second_;

public:

    really_trivial();
    ...
};

Хотя в этомsemi_complex класс, я бы добавил конструктор перемещения и оператор присваивания перемещения без колебаний:

class semi_complex
{
    std::vector<std::string> strings_;

public:

    semi_complex(semi_complex&& other);
    semi_complex& operator=(semi_complex&& other);
    ...
};

Итак, в каком количестве и с какими переменными-членами имеет смысл добавлять конструкторы перемещения и операторы присваивания перемещения?

Ответы на вопрос(5)

Ваш ответ на вопрос