Currently `expected<T,E>` and `expected<T,exception_ptr>` don’t compare its values in the same way. Should `expected<T,E>` make all the unexpected values equal as it does `expected<E,exception_ptr>`?