как компилятор достаточно умён... и увидит при передаче по значению можно смувать или нет. Или на это вообще не нужно полагаться?
1. Временные значения не нужно мувать 2. Делать return std::move(...); не надо 3. Мувать нужно переменные, которые в скоупе больше не используются, кроме случаев п. 2
(2) если метод возвращает std::optional<T>, а ты в методе делаешь return объекта lvalue T, то move имеет смысл
Тогда лучше создать объект optional явно Например return { std::move(...) }; Но как мы видим под мой 2 пункт это не подходит )
Обсуждают сегодня