2017-05-28 1:27 GMT+02:00 Peter Dimov via Boost
Andrzej Krzemienski wrote:
``` expected
o = fun(); // (*) if (o.has_value()) ... ``` Upon the call to has_value() how is it possible that I am experiencing the valueless_by_exception state?
It's not possible to experience that state here. It's possible to experience it in other scenarios. If o is non-local, for example, the assignment throws, and a catch block either catches the exception and further code examines o, or if the catch block or a destructor calls a function that examines o.
My first reaction to this is: such a code is again fishy, and it is better to avoid writing such code that offer stronger guarantees. "Examines`o`" -- for what purpose? (after the throw, nowing that it ia in a valid but unspecified state). But maybe it is my inability to imagine a practical use case for it. It would help me, if you could show an example that illustrates a practical value of such examination of an object in a valid-but-unspecified state. (Other than to determine if it is in a valid-but-unspecified state.) Regards, &rzej;