$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] [outcome] High level summary of review feedback accepted so far
From: Gavin Lambert (gavinl_at_[hidden])
Date: 2017-05-29 23:41:29
On 30/05/2017 11:25, Vicente J. Botet Escriba wrote:
> Le 29/05/2017 à 17:05, Niall Douglas a écrit :
>>>> - error_type& .error_raw() - reinterpret_cast<error_type&>
>>> evidently we don't like the _raw suffix.
>> .error_unsafe(), .unsafe_error(), .unchecked_error() all work for me too.
> How likes any of those?
> Who prefers error() to throw if there is a value? or return by value and
> return E{} when there is a value and I don't know hat when there is an
> exception_ptr?
FWIW, my preferred options would be (which I think were the originals):
- value() throws if holding error or exception (or empty)
- error() returns E{} if holding value or E{errc::has_exception} if
holding exception, or E{errc::no_value} if empty (names made up on the
spot, doesn't matter)
- exception() returns nullptr if holding value or error or empty
These seem like safe and reasonable defaults and permits code to always
extract an error_code or exception_ptr even on success, which can aid
certain interop scenarios with older APIs and otherwise simplify caller
logic.
I would prefer that unchecked_* (or whatever) versions did not exist as
then nobody would accidentally call them and perhaps introduce UB. But
I'm not strongly opposed to them.