Any object of type
expected<T, E> either
represents a value of type
T, or
contains a value of type
E within its own storage
. Implementations are not permitted to use additional storage,
such as dynamic memory, to allocate the object of type
E. Member
has_val indicates whether the
expected<T, E> object
represents a value of type
T.