std_result<T, E>no longer implement hard UB on fetching a value from a valueless instance if
Eis a UDT, they now fail to compile with a useful error message. If you wish hard UB, use
status_outcome based on experimental
Boost edition is now 100% Boost, so defaults for
the test suite in the Boost edition now exclusively tests the Boost edition.
One can, of course, freely use the standalone edition with Boost, and the Boost
Renamed ADL discovered customisation point
outcomewhere two or more types are identical. Thanks to Andrzej Krzemieński for suggesting a technique which combines SFINAE correctness with the remaining ability for
result<T, T>etc to be a valid type, but not constructible.
Inexplicably outcome’s error + exception constructor had been removed. Nobody noticed during the Boost peer review, which is worrying seeing as that constructor is needed for one of the main advertised features to Boost!
operator!=now become disabled if the value, error and exception types do not implement the same operator.
swap()now has correct
noexceptcalculation and now correctly orders the swaps to be whichever is the throwing swap first.
Added reference dump of v2.1 ABI so we can check if ABI breakage detection works in the next set of changes, plus Travis job to check ABI and API compatibility per commit.
OUTCOME_TRYis now overloaded and selects
autoedition according to input parameter count.
OUTCOME_UNIQUE_NAME, which is UB.
resultfrom its hard coded dependency on the
<exception>dependent code into new
boost_outcome.hppwhich use Boost.System and Boost.Exception (these are
outcome.hppin the Boost edition).