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 what are its typical use cases.
Getting ready
The class template std::optional<T>
 was designed based on boost::optional
and is...