Информация об изменениях

Сообщение Re[8]: Есть ли жизнь после перемещения? от 20.11.2018 20:11

Изменено 20.11.2018 20:16 rg45

Re[8]: Есть ли жизнь после перемещения?
Здравствуйте, lpd, Вы писали:

lpd>Прощай лишняя косвенность, здравствуй rvalue reference.


Как пример упрощения. Без косвенности проще, чем с ковенностью.

lpd>Сложно придумать пример класса, для которого копирование реализовать сложнее, чем перемещение. И зачем экономить на копировании большинства классов?


Запросто, смотри

class PhysicalWorld
{
public:

  PhysicalWorld();
  PhysicalWorld(PhysicalWorld&&) = default;
  PhysicalWorld& operator = (PhysicalWorld&&) = default;

  // Задолбишься пыль глотать.
  // Да и нафиг не нужно никому.
  // Поэтому non-copyable
  PhysicalWorld(const PhysicalWorld&) = delete;
  PhysicalWorld& operator = (const PhysicalWorld&) = delete;

private:
  class Impl;
  std::inique_ptr<Impl> m {};
};


R>> Проще стало возвращать значения из фунцкций — если не отработает RVO/NRVO, по каким-то причинам, то move точно не подведет.

lpd>Я понял, у тебя фобия лишней косвенности. Могу напомнить: под капотом у rvalue reference все то же самое.

Где ты тут что про косвенность нашел

lpd>Допустим(это я не понял, особенно зачем ты часто подобными проблемами мучаешься).


Ну потому что я иногда не только палочкой окаменелые какашки ковыряю, как некоторые.

lpd>Я все таки на всякий случай спрошу: надеюсь, ты не всем вподряд типам добавляешь move-конструкторы?


Нет, конечно. Зачем же мне у компилятора отбирать его работу. Странное у тебя представленние о поддержке мув-семантики.
Re[8]: Есть ли жизнь после перемещения?
Здравствуйте, lpd, Вы писали:

lpd>Прощай лишняя косвенность, здравствуй rvalue reference.


Как пример упрощения. Без косвенности проще, чем с ковенностью.

lpd>Сложно придумать пример класса, для которого копирование реализовать сложнее, чем перемещение. И зачем экономить на копировании большинства классов?


Запросто, смотри

class PhysicalWorld
{
public:

  PhysicalWorld();
  PhysicalWorld(PhysicalWorld&&) = default;
  PhysicalWorld& operator = (PhysicalWorld&&) = default;

  // Задолбишься пыль глотать.
  // Да и нафиг не нужно никому.
  // Поэтому non-copyable
  PhysicalWorld(const PhysicalWorld&) = delete;
  PhysicalWorld& operator = (const PhysicalWorld&) = delete;

private:
  class Impl;
  std::inique_ptr<Impl> m {};
};


R>> Проще стало возвращать значения из фунцкций — если не отработает RVO/NRVO, по каким-то причинам, то move точно не подведет.

lpd>Я понял, у тебя фобия лишней косвенности. Могу напомнить: под капотом у rvalue reference все то же самое.

Где ты тут что про косвенность нашел

lpd>Допустим(это я не понял, особенно зачем ты часто подобными проблемами мучаешься).


Ну потому что я иногда не только палочкой окаменелые какашки ковыряю, как некоторые.

lpd>Я все таки на всякий случай спрошу: надеюсь, ты не всем вподряд типам добавляешь move-конструкторы?


Нет, конечно. Зачем же мне у компилятора отбирать его работу. А там где добавляю, то чаще всего как default, как в примере выше. Странное у тебя представленние о поддержке мув-семантики, надо сказать.