Сообщение Re[8]: Есть ли жизнь после перемещения? от 20.11.2018 20:11
Изменено 20.11.2018 20:16 rg45
Re[8]: Есть ли жизнь после перемещения?
Здравствуйте, lpd, Вы писали:
lpd>Прощай лишняя косвенность, здравствуй rvalue reference.
Как пример упрощения. Без косвенности проще, чем с ковенностью.
lpd>Сложно придумать пример класса, для которого копирование реализовать сложнее, чем перемещение. И зачем экономить на копировании большинства классов?
Запросто, смотри
R>> Проще стало возвращать значения из фунцкций — если не отработает RVO/NRVO, по каким-то причинам, то move точно не подведет.
lpd>Я понял, у тебя фобия лишней косвенности. Могу напомнить: под капотом у rvalue reference все то же самое.
Где ты тут что про косвенность нашел
lpd>Допустим(это я не понял, особенно зачем ты часто подобными проблемами мучаешься).
Ну потому что я иногда не только палочкой окаменелые какашки ковыряю, как некоторые.
lpd>Я все таки на всякий случай спрошу: надеюсь, ты не всем вподряд типам добавляешь move-конструкторы?
Нет, конечно. Зачем же мне у компилятора отбирать его работу. Странное у тебя представленние о поддержке мув-семантики.
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>Сложно придумать пример класса, для которого копирование реализовать сложнее, чем перемещение. И зачем экономить на копировании большинства классов?
Запросто, смотри
R>> Проще стало возвращать значения из фунцкций — если не отработает RVO/NRVO, по каким-то причинам, то move точно не подведет.
lpd>Я понял, у тебя фобия лишней косвенности. Могу напомнить: под капотом у rvalue reference все то же самое.
Где ты тут что про косвенность нашел
lpd>Допустим(это я не понял, особенно зачем ты часто подобными проблемами мучаешься).
Ну потому что я иногда не только палочкой окаменелые какашки ковыряю, как некоторые.
lpd>Я все таки на всякий случай спрошу: надеюсь, ты не всем вподряд типам добавляешь move-конструкторы?
Нет, конечно. Зачем же мне у компилятора отбирать его работу. А там где добавляю, то чаще всего как default, как в примере выше. Странное у тебя представленние о поддержке мув-семантики, надо сказать.
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, как в примере выше. Странное у тебя представленние о поддержке мув-семантики, надо сказать.