?
std::optional< std::string > foo () {
std::string s = get_bar();
if ( !s.empty())
return std::optional<std::string> (
std::move ( s ) // здесь нужен std::move() ?
) ;
return std::nullopt;
}
?
/s@SupaproBot
Да, так пойдёт
мне кажется, что нужен
А зачем возвращать std::optional вообще?(явно конструктор писать) Там ведь пользовательское преоразование будет одно и его достаточно
Код старый, легаси. Поинтесовался что поменялся со С++17 стандартом.
там вроде просто конструктор дёрнут)
Да, а разница ли для NRVO & RVO через какой конструктор ты объект создаешь? RVO будет в любом случае, если ты именно сам результат не муваешь
я имею ввиду что не понятно, какие ещё пользовательские преобразования)
тут вообще rvo/nrvo не причем кажется, оно отдельно отработает, а вопрос какой конструктор дёрнется в итоге у optional, const T& или T&&
А я о чём сказал?
Там ведь пользовательское преоразование будет одно и его достаточно
Обсуждают сегодня