return std::move(res);
}
Вреден ли тут move?
нет, даже полезен
Разве не мешает rvo?
А почему? А как же NRVO?
Посмотрите тип возвращаемого значения
типы разные
Да, теперь понял
Вреден
Потому что RVO (ну здесь NRVO)
Там возвращаемый тип другой.
А чем rvo не устраивает? Ну кроме того, что это произойдёт на усмотрение компилятора
Илья, вы наугад термины пишите?)
Так они почти неразличимы
Мувается string, а не optional
а вот и споймали джуна с ПРЛ
Спасибо https://godbolt.org/z/5bMTr48zd
Очень даже, если у возвращаемого объекта есть имя, то это уже не RVO
RVO - возврат prvalue, NRVO - возврат переменной
Да это тогда другое дело тогда тут надо посмотреть Есть ли у optional конструктор от RWR
Обсуждают сегодня