diff --git a/README.md b/README.md index d79e3f87..49c0fe21 100644 --- a/README.md +++ b/README.md @@ -42,8 +42,6 @@ The next code snippet shows optional range support added in [Give *std::optional #include ... -// Example from P3168R2: basic range loop over C++26 optional. - beman::optional::optional empty_opt{}; for ([[maybe_unused]] const auto& i : empty_opt) { // Should not see this in console. @@ -69,28 +67,21 @@ The next code snippet shows optional reference support added in [`std::optional< #include ... -{ - // Empty optional example. - std::optional std_empty_opt; - beman::optional::optional beman_empty_opt; - assert(!std_empty_opt.has_value() && - !beman_empty_opt.has_value()); // or assert(!std_empty_opt && !beman_empty_opt); - std::cout << "std_vs_beman: .has_value() matches?: " - << (std_empty_opt.has_value() == beman_empty_opt.has_value() ? "yes" : "no") << "\n"; -} +struct Cat { ... }; + +beman::optional::optional find_cat(std::string) { return {}; } +beman::optional::optional do_it(Cat& cat) { return { cat }; } -{ - // Optional with value example. - std::optional std_opt = 26; - beman::optional::optional beman_opt = 26; - assert(std_opt.has_value() && beman_opt.has_value()); // or assert(std_opt && beman_opt); - assert(std_opt.value() == beman_opt.value()); // or assert(*std_opt == *beman_opt); - std::cout << "std_vs_beman: .value() matches?: " << (std_opt.value() == beman_opt.value() ? "yes" : "no") - << "\n"; +beman::optional::optional api() { + beman::optional::optional cat = find_cat("Fido"); + return cat.and_then(do_it); } + +beman::optional::optional cat = api(); + ``` -Full code can be found in [./examples/optional_ref.cpp](./examples/optional_ref.cpp). Build and run instructions in [./examples/README.md](./examples/README.md). +Full code can be found in [./examples/optional_ref.cpp](./examples/optional_ref.cpp). Build and run instructions in [./examples/README.md](./examples/README.md). Or try it on Compiler Explorer: [optional_ref.cpp@Compiler Explorer](https://godbolt.org/z/MxjdvTTov). ## How to Build