Added default constructor, value_or, then, next, recover, operator==, ... and constexpr. constexpr doesn't works yet.

Use REQUIRES macro for SFINAE.