In this post we’ll have a look at new operations added to std::optional in C++23. These operations, inspired by functional programming concepts, offer a more concise and expressive way to work with optional values, reducing boilerplate and improving code readability.
Let’s meet and_then(), transform() and or_else(), new member functions.
Traditional Approach with if/else and optional C++20 In C++20 when you work with std::optional you have to rely heavily on conditional checks to ensure safe access to the contained values.
I don’t think it’s inconsistent. Optionals are monads by design. It would not make any sense to leave basic monadic operations out just because non-monadic components exist.
If anything, C++ is missing an either/neither monad, and specializations such as a result monad.