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