[clang] [clang] Implement CWG2815 (PR #132778)
Younan Zhang via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 25 01:05:20 PDT 2025
================
@@ -5242,10 +5255,12 @@ TryReferenceInit(Sema &S, Expr *Init, QualType DeclType,
// FIXME: As a speculative fix to a defect introduced by CWG2352, we rank
// a reference binding that performs a non-top-level qualification
// conversion as a qualification conversion, not as an identity conversion.
- ICS.Standard.Third = (RefConv &
- Sema::ReferenceConversions::NestedQualification)
- ? ICK_Qualification
- : ICK_Identity;
+ ICS.Standard.Third =
+ (RefConv & Sema::ReferenceConversions::Function)
+ ? ICK_Function_Conversion
+ : (RefConv & Sema::ReferenceConversions::NestedQualification)
+ ? ICK_Qualification
+ : ICK_Identity;
----------------
zyn0217 wrote:
This is getting complicated. How about
```cpp
if (RefConv & Sema::ReferenceConversions::Function)
ICS.Standard.Third = ICK_Function_Conversion;
else if (RefConv & Sema::ReferenceConversions::NestedQualification)
ICS.Standard.Third = ICK_Qualification;
else
ICS.Standard.Third = ICK_Qualification
```
https://github.com/llvm/llvm-project/pull/132778
More information about the cfe-commits
mailing list