データを解析し、結果を次の関数に渡す次の例を考えてみましょう。
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
か?