Using std::optional to store optional values
Sometimes, it is useful to be able to store either a value or a null if a value is not available. A typical example for such a case is the return value of a function that may fail to produce a return value, but this failure is not an error. For instance, think of a function that finds and returns values from a dictionary by specifying a key. Not finding a value is a probable case and, therefore, the function would either return a Boolean (or an integer value, if more error codes are necessary) and have a reference argument to hold the return value or return a pointer (raw or smart pointer). In C++17,
std::optional is a better alternative to these solutions. The class template
std::optional is a template container for storing a value that may or may not exist. In this recipe, we will see how to use this container and its typical use cases.
The class template
std::optional<T> was designed based on...