if (auto i = str.find(_a) != std::string::npos) {
return *std::optional<std::string>("Value Found!");
}
return std::nullopt;
}
int main()
{
auto f = func('e');
std::cout << *f << std::endl;
}
почему если я разыменовываю rvalue std::optional<std::string> он в main ловит в качестве типа не std::string, а std::optional? При том что оператор * возвращает обьект который хранит
А что не так то
Блять, я и не заметил что тип возвращаемого значения стоит std::optional и поэтому он заново в конструктор оборачивается и преврощаеться в std::optional
Что значит ловит?
Да вроде правильно всё: https://coliru.stacked-crooked.com/a/7c49205d22a8cae6
Обсуждают сегодня