[cfe-users] Final C++20 rules and -Wambiguous-reversed-operator

Richard Smith via cfe-users cfe-users at lists.llvm.org
Sun Mar 15 12:14:12 PDT 2020


On Thu, 12 Mar 2020 at 15:14, Romain GEISSLER via cfe-users <
cfe-users at lists.llvm.org> wrote:

> Hi,
>
> It looks like the working of C++20 introduced some breaking
> compatibilities with some C++17 accepted patterns. From what I read in
> https://reviews.llvm.org/rL375306 these incompatibilities weren’t really
> intented by the initial C++20 proposal, and thus broken patterns were still
> allowed as an extension, but would warn with -Wambiguous-reversed-operator
> enabled by default. Richard Smith had some hope that the C++20 standard
> would be fixed before being final.
>
> C++20 is not fully finalized yet, but this date is approaching. What’s the
> state of the standard now ? Have the comparison issues been fixed ?


No, we still don't have a resolution from the C++ committee, but it's being
discussed by various implementers, and we hope to present to the committee
a suggested set of changes to minimize the pain to users as soon as we can.
I expect we will change /something/ as a DR fix against C++20, but the
exact details are unclear.

If not, what do you suggest to users ? Fix the code (when it’s actually
> possible and make sense), or compile with -Wno-ambiguous-reversed-operator
> ? I am asking this question in the particular case of boost date_time:
> https://github.com/boostorg/date_time/issues/132 where I am actually
> unsure this is a good idea to change the existing code.
>

If you can change the code in a way that's compatible with the C++20 rules,
that will give you the best portability across compilers in the short term.
If Boost is prepared to wait until this is fixed before supporting
-std=c++20, then that would seem reasonable too.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20200315/8effb766/attachment.html>


More information about the cfe-users mailing list