EricWF marked 2 inline comments as done.
EricWF added inline comments.

================
Comment at: lib/Sema/SemaCast.cpp:1148
 
+  // FIXME C++1z doesn't allow this conversions for xvalues.
   if (!SrcExpr->isGLValue())
----------------
rsmith wrote:
> Actually, it does, but it's covered by p4. (p3 now only covers the special 
> lvalue->xvalue case for `static_cast`, which is not permitted by p4.) It's 
> fine for us to still handle this here, or to allow the p4 case to deal with 
> it instead. It's probably better to keep handling it here, since we produce 
> better diagnostics this way.
Cool sounds good. I knew p4 would end up handling it, but I wasn't sure if 
forwarding to p4 would allow previously ill-formed conversions. I tried to 
construct such a case but couldn't.


================
Comment at: lib/Sema/SemaCast.cpp:1171-1173
+    msg = SrcExpr->isLValue() ? diag::err_bad_lvalue_to_rvalue_cast
+                              : diag::err_bad_rvalue_to_rvalue_cast;
     return TC_Failed;
----------------
rsmith wrote:
> OK, so the idea here is that p4 will never apply in a case where the 
> reference is reference-related to the source but not reference-compatible, 
> and no other rules would let us static_cast to reference type? It would be 
> good to add a comment explaining that, since it's not immediately obvious.
That's my understanding. I'll add a comment.  


https://reviews.llvm.org/D26231



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

Reply via email to