describes class template optional
An optional object
object that contains the storage for another object and manages the lifetime of
this contained object, if any.
The contained object may be initialized after
the optional object has been initialized, and may be destroyed before the
optional object has been destroyed.
The initialization state of the contained
object is tracked by the optional object.