Рассмотрят следующий пример, где мы разбираем данные и передать результат в следующую функцию:Как перейти от станда :: опциональной <T>
Content Parse(const std::string& data);
void Process(Content content);
int main()
{
auto data = ReadData();
Process(Parse(data));
}
Теперь давайте изменим код, используя std::optional
обрабатывать неудачный шаг разбора:
optional<Content> Parse(const std::string& data);
void Process(Content content);
int main()
{
auto data = ReadData();
auto content = Parse(data);
if (content)
Process(move(*content));
}
Действительно ли для переезда с optional<T>::value()
? Если это нормально для std::optional
, это действительно для boost::optional
?
Я бы подумал, что все будет хорошо. При переходе от него содержащееся значение должно находиться в правильном, но неуказанном состоянии. –