This is a regular wrapper type, with defaulted default, copy and move constructor, defaulted assignment, and defaulted destructor.
A member type alias
There is an explicit initialising constructor taking any type
U which is not a
success_type<T>, and which will forward construct the contained
T from that
There is a
.value() reference observer with the usual constexpr lvalue, const lvalue, rvalue and const rvalue overloads.
There is a specialisation
success_type<void> which stores nothing and provides no