2. .ensure(empty|value|error|exception) will perform the default actions of calling the observer function for that state, but not return that state.
Weak yes. - I am not sure why you need this fancy syntax.
The constexpr variables are already there. So basically do we prefer: 1. .ensure_empty(), .ensure_value(), .ensure_error() and .ensure_exception() 2. Or .ensure(empty), .ensure(value), .ensure(error) and .ensure(exception) I figure the latter looked nicer. It's same difference to the compiler, simple overload matching is constant time.
Also, get rid of `is_ready()` if it does the same thing as `empty()`. And maybe `is_empty()` would be less ambiguous: word "empty" is also a verb in english.
Logged some time ago to https://github.com/ned14/boost.outcome/issues/19. I'll post a full changelog of all things already changed and a list of already agreed changes to come tomorrow when the review begins. I won't be changing the edition posted for review however, current develop branch has seen a lot of not well tested change this past week thanks to all the feedback so far. Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/