|
Boost : |
Subject: Re: [boost] [outcome] Change semantics on UB from peer review agreed semantics?
From: Gavin Lambert (boost_at_[hidden])
Date: 2018-09-13 00:11:54
Mere moments ago, quoth I:
> Perhaps boost::throw_error, which is expected to internally construct an
> appropriate exception based on its argument type and then call
> boost::throw_exception?
To clarify, I was wondering if we should:
1. Implement an error-to-exception conversion trait as a generic
template which does not compile by default.
2. Provide a specialisation for boost::system::error_code which
returns boost::system::system_error.
3. (Where supported by the STL) Provide a specialisation for
std::error_code which returns std::system_error.
4. Allow users to provide additional specialisations for other error
types.
5. Provide generic boost::throw_error which calls
boost::throw_exception on the result of the conversion trait.
6. Make Outcome's default policy call boost::throw_error instead of
hard UB.
The people who want hard UB can still use a policy that requests it.
Everyone else will get a compile error until they either implement the
conversion trait, use an error_type which is already implemented, or
switch to a UB policy.
Bonus: the conversion trait provides an easy way to ask metaprogramming
questions such as "what is the exception type for this error code" or
"is this a throwable error code type".
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk