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

Richard Smith via cfe-users cfe-users at lists.llvm.org
Thu Mar 19 17:02:05 PDT 2020


On Thu, 19 Mar 2020 at 05:28, Romain GEISSLER <romain.geissler at amadeus.com>
wrote:

> > Le 15 mars 2020 à 20:14, Richard Smith <richard at metafoo.co.uk> a écrit :
> >
> > 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.
>
> Hi,
>
> Thanks for the heads up.
>
> I am not sure how valid is my request, but I found a case where I wished
> -Wambiguous-reversed-operator would avoid what today with clang 10 is a
> strong error.
>
> Consider this code: the == comparison warning is avoidable with
> -Wambiguous-reversed-operator, but not the != comparison. This make
> existing C++17 code behavior non-symetric when migrating to pack C++20, and
> a bit awkward for users:
>
> template <typename T> struct A
> {
>     bool operator==(const T&) const;
>     bool operator!=(const T&) const;
> };
>
> struct B : public A<B> {};
>
> bool f()
> {
>     bool a1 = B() == B(); // Works, only a -Wambiguous-reversed-operator
> warning
>     bool a2 = B() != B(); // Strong error, which you can't avoid with
> -Wno-ambiguous-reversed-operator flag
> }
>
> Do you think that in the meantime while we wait for the C++ committee to
> standardize a real DR clang 10 should be update to also just warns in such
> cases involving != ?


At this point it's likely too late to do anything different for Clang 10...
but the rule we're discussing to fix this issue would make the above case
work. I'll see about implementing that sooner rather than later.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20200319/9a5f3b14/attachment.html>


More information about the cfe-users mailing list