================
@@ -8340,8 +8340,17 @@ void Sema::checkInitializerLifetime(const 
InitializedEntity &Entity,
             << Entity.getType()->isReferenceType() << CLE->getInitializer() << 
2
             << DiagRange;
       } else {
-        Diag(DiagLoc, diag::warn_ret_local_temp_addr_ref)
-         << Entity.getType()->isReferenceType() << DiagRange;
+        // P2748R5: Disallow Binding a Returned Glvalue to a Temporary.
+        // [stmt.return]/p6: In a function whose return type is a reference,
+        // other than an invented function for std::is_convertible 
([meta.rel]),
+        // a return statement that binds the returned reference to a temporary
+        // expression ([class.temporary]) is ill-formed.
----------------
t3nsor wrote:

I don't know if Clang implements all the cases in [class.temporary], but I 
would assume "yes", because if not, then users are already not getting 
lifetime-extended temporaries in places where they would expect them, which 
would be bad. The changes to this file are basically the same as what I had 
prototyped in my branch.

https://github.com/llvm/llvm-project/pull/89942
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to