std::optional
optional<T> is a that's used to contain a value that might be present or not.
The class takes a template parameter, T, which represents the type that the std::optional template class might contain. Value type means that the instance of the class contains the value. Copying optional will create a new copy of the contained data.
At any point in the execution of the program, optional<T> either contains nothing, when it's empty, or contains a value of type T.
Optional is defined in the <optional> header.
Let's imagine our application is using a class named User for managing registered users. We would like to have a function that gets us the information of a user from their email: User getUserByEmail(Email email);.
But what happens when a user is not registered? That is, when we can determine that our system does not have the associated User instance?
Some would suggest throwing an exception. In C++, exceptions are used for exceptional situations, ones that should almost...