Why does the library make the types possibly-empty? I couldn't find
the > answer in the documentation.
No, I mean that the types have an empty state. variant and
expected don't have one.
C++ 17's variant<...> does actually. It's called valueless by exception.
It is hoped the valueless state may be removed from a future C++
standard, but for now it is present.
outcome<T>, result<T> and option<T> all have formal empty states as part
of their programming model. They are quite useful for a multitude of
uses, I mainly have used them to early out from a sequence of monadic
operations or to signal an abort from a noexcept function.
expected does not have an empty state, and as
https://ned14.github.io/boost.outcome/md_doc_md_08-expectedsynopsis.html
explains, that will be fixed soon (end of this week on develop branch I
currently expect). For those interested in tracking the fix, you can
watch https://github.com/ned14/boost.outcome/issues/11.
(In case you are wondering why I submitted Outcome with a "defective"
expected, it was because I was not aware of many of the deviations
from LEWG Expected that Outcome's Expected had until after my ACCU talk.
My thanks to Anthony Williams and Vicente for informing me. Realising I
could not fix all the deviations in time for code freeze for this
review, I prioritised and fixed the worst problems first. The never
empty state didn't make it in time, but as I say, it should be fixed on
develop branch within the week and it is not a state which will ever
arise unless you like throwing exceptions from your move and copy
constructors).
Niall
--
ned Productions Limited Consulting
http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/