3

次のように、オプションの構造体を返すメソッドがあります。

auto getBook(const std::string &title) const -> std::optional<Book>;

オプションの作成者を返す別のメソッドでこのメソッドを呼び出したいと思います。問題は、次のように、メソッドを呼び出す前に getBook によって返されるオプションが入力されているかどうかを実装が常にチェックする必要があることです。

auto getAuthor(const std::string &title) const -> std::optional<Author>
{
   const auto optBook = getBook(title);
   if (optBook.has_value)
      return optBook->getAuthor();
   else
      return std::nullopt;
}

オプションが満たされている場合はメソッドが呼び出され、オプションが空の場合std::nulloptは返されるように、これをより短い方法で記述する方法はありますか。このようなもの(これは現在機能しないことはわかっていますが、私の主張は理解できます):

auto getAuthor(const std::string &title) const -> std::optional<Author>
{
   return getBook(title).getAuthor();
}
4

4 に答える 4