On 30/11/2015 16:18, Domagoj Šarić wrote:
On Fri, 27 Nov 2015 04:56:32 +0530, Gavin Lambert
wrote: It does make the behaviour a little strange for the various cases though:
calcA(); // throws because fallible_result went uninspected calcB();
That's intended/by design behaviour, 'the classic EH style usage' (the throw happens only if the call failed, i.e. the return value contains an err_t, not T, so the err_t is thrown, with a possible transformation into an object/wrapper more apt for EH but those are details I'd rather not go at this stage)...what problem do you see here?
I'm not calling out the cases individually as problems, I'm trying to point out that the set as a whole seems inconsistent, and somewhat surprising with regard to "auto" and (at least for the original implementation) with the asserts. Maybe I'm just being too nitpicky though. They were intended to cover all usages, though I know there are some that I missed (such as use of operator*).