Boost logo

Boost :

From: Niall Douglas (s_sourceforge_at_[hidden])
Date: 2020-07-22 16:52:02


On 22/07/2020 17:39, Andrey Semashev via Boost wrote:
> On 2020-07-22 19:25, Niall Douglas via Boost wrote:
>>
>> So Peter, seeing as you're the closest person to an expert in C++ 20
>> operator rewriting that I know of (and there is absolutely nothing about
>> this on the internet),
>
> FWIW, I found this article helpful to understand the new operators
> behavior:
>
> https://brevzin.github.io/c++/2019/07/28/comparisons-cpp20/
>
> TL;DR version is in the summary:
>
> https://brevzin.github.io/c++/2019/07/28/comparisons-cpp20/#summary-of-rules

That was very useful.

It turns out that for operator== only, C++ 20 will auto reverse it. So,
in Outcome, I need to disable free function reversed operator== only,
for C++ 20 and later. I must leave free function reversed operator!= alone.

Now all we need is for clang to stop claiming C++ 17 when it's in C++
20. I understand clang 11 will be the first to do this. Until then,
Boost.Outcome can never be 100% green in the Boost test suite.

(Apart from MSVC that is. They have a long standing instability bug in
two phase lookup where depending on random chance, either MSVC discovers
ADL injected hooks, or it doesn't, per compilation. They know about the
bug, and there is no estimate for when it will be fixed. This is why in
the Boost regression suite, the hooks test randomly flips from passed to
fail all the time for MSVC)

Thanks everybody for your help.

Niall


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk