mizvekov added inline comments.

================
Comment at: clang/lib/Sema/SemaStmt.cpp:3478-3481
+        // Check that overload resolution selected a conversion operator
+        // taking an rvalue reference.
+        if (cast<CXXMethodDecl>(FD)->getRefQualifier() != RQ_RValue)
+          break;
----------------
rsmith wrote:
> Is the removal of this check for an rvalue ref qualifier a bugfix? If so, 
> please add a test. I suppose it would look something like this:
> ```
> struct B;
> struct A { A(B&) = delete; };
> struct B { operator A(); };
> A f() { B b; return b; }
> ```
> ... which would be ambiguous if we don't implicitly convert to xvalue, but if 
> we do, it selects a conversion function that is not rvalue-ref-qualified.
Yeah you are right. I was reading that section of the standard again in bed to 
try to get some sleep, and it suddenly clicked me that we were just supposed to 
be doing that first overload resolution with the expression as an xvalue and 
that is it. There was no reason to be anything else in there.
I just could not resist the urge to get up and fix it thought :)
I'll leave the test case for tomorrow though!


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D104500/new/

https://reviews.llvm.org/D104500

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to