template <storage_class_e storage_class, typename E, typename... Ts>
struct storage_type
Storage type is either empty, holds an error, or holds a set of values. This
type is specialized for trivially and non-trivially destructible types. When
E and all of the elements of Ts are trivially destructible, this type
provides a trivial destructor, which is necessary for multi-register return
value optimization.