Доброго времени суток...
Представим, что имеется некий класс super_t
| Код | class super_t { public: super_t() {} super_t(const super_t& x) {} super_t(super_t&& x) {} const super_t& operator=(const super_t& x) {} const super_t& operator=(super_t&& x) {} ~super_t() {} };
|
и некие методы/функции, которые его используют таким образом:
| Код | super_t super_method_0() { super_t result; return ::std::move(result); }
super_t super_method_2(const super_t& x, const super_t& y) { ... }
void some_fn() { super_t x = super_method_2(super_method_0(), super_method_0()); }
|
Соответственно вопрос - будет ли при вызове super_method_2(super_method_0(), super_method_0()) копирование или перемещение при передаче значений в super_method_2, и как избежать лишнего копирования в таких ситуациях? |