никакой RVO нету тут, или я путаю?
Для приличия можно так написать:
string getName() const& { return pass; }
string getName() && { return std::move(pass); }
ОМГ. Давайте по шагам: string releaseName() const { return std::move(pass); } Результатом move будет const string&& т.к. метод помечен как const. это вас спасает от того, что внутри класа окажется пустая строчка. string releaseName() { return std::move(pass); } Результатом move будет string&& . Внутри класа окажется пустая строчка. string getName() const& { return pass; } Зачем-то делаете копирование, хотя обычно принято возвращать по константной ссылке. string getName() && { return std::move(pass); } Тут всё норм :)
Обсуждают сегодня