aaron.ballman added inline comments.

================
Comment at: clang/lib/Sema/SemaOverload.cpp:5638
   ImplicitConversionSequence ICS =
-      CCE == Sema::CCEK_ExplicitBool
-          ? TryContextuallyConvertToBool(S, From)
-          : TryCopyInitialization(S, From, T,
-                                  /*SuppressUserConversions=*/false,
-                                  /*InOverloadResolution=*/false,
-                                  /*AllowObjCWritebackConversion=*/false,
-                                  /*AllowExplicit=*/false);
+      TryCopyInitialization(S, From, T,
+                            /*SuppressUserConversions=*/false,
----------------
This function is checking converted constant expressions which was not touched 
by p1401r5, and it looks like this will break anything attempting to to 
contextual conversion constant expressions of type bool per 
http://eel.is/c++draft/expr.const#10 because it's removing the attempt to 
contextually convert to bool here.


================
Comment at: clang/lib/Sema/SemaOverload.cpp:5638
   ImplicitConversionSequence ICS =
-      CCE == Sema::CCEK_ExplicitBool
-          ? TryContextuallyConvertToBool(S, From)
-          : TryCopyInitialization(S, From, T,
-                                  /*SuppressUserConversions=*/false,
-                                  /*InOverloadResolution=*/false,
-                                  /*AllowObjCWritebackConversion=*/false,
-                                  /*AllowExplicit=*/false);
+      TryCopyInitialization(S, From, T,
+                            /*SuppressUserConversions=*/false,
----------------
aaron.ballman wrote:
> This function is checking converted constant expressions which was not 
> touched by p1401r5, and it looks like this will break anything attempting to 
> to contextual conversion constant expressions of type bool per 
> http://eel.is/c++draft/expr.const#10 because it's removing the attempt to 
> contextually convert to bool here.
Also, I don't think P1401 was applied as a DR (but we should double check!) so 
I'd expect some checks for the language standard to gate the behavior. If P1401 
was applied as a DR, then we should add some tests to clang/test/CXX with the 
proper DR markings so that our DR status page gets updated.


================
Comment at: clang/test/SemaCXX/cxx2a-explicit-bool.cpp:731
+
+namespace P1401 {
+
----------------
Curiously, these tests already have this behavior without this patch applied: 
https://godbolt.org/z/13PojdWEe


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D106216

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

Reply via email to