Я простой программист. Мои переменные класса чаще всего состоят из типов POD и STL-контейнеров. Из-за этого мне редко приходится писать операторы присваивания или конструкторы копирования, поскольку они реализованы по умолчанию.
Добавьте к этому, если я использую std::move
для объектов, не подвижных, он использует оператор присваивания, то есть std::move
совершенно безопасен.
Поскольку я простой программист, я бы хотел воспользоваться возможностями move без добавления оператора конструктора/назначения перемещения для каждого класса, который я пишу, поскольку компилятор мог просто реализовать их как "this->member1_ = std::move(other.member1_);...
",
Но это не так (по крайней мере, не в Visual 2010), есть ли какая-то особая причина для этого?
Более важно; Есть ли способ обойти это?
Update: Если вы посмотрите на ответ GManNickG, он предоставит для этого отличный макрос. И если вы не знаете, если вы реализуете семантику перемещения, вы можете удалить функцию члена подкачки.