//******************************************************** // The following code example is taken from the book // C++23 - The Complete Guide // by Nicolai M. Josuttis (www.josuttis.com) // http://www.cppstd23.com // // The code is licensed under a // Creative Commons Attribution 4.0 International License // http://creativecommons.org/licenses/by/4.0/ //******************************************************** #include #include #include std::optional getOptString(int num) { if (num <= 0) { return std::nullopt; // return no value } // return a test string with num characters: return std::string(num, '+'); } int main() { // OK: std::cout << getOptString(20).value() << '\n'; // RUNTIME ERROR (undefined behavior) before C++23: for (const auto& elem : getOptString(20).value()) { std::cout << elem << ' '; } std::cout << '\n'; }