================ @@ -9108,7 +9123,8 @@ bool Sema::CheckExplicitlyDefaultedComparison(Scope *S, FunctionDecl *FD, // declaration, it is implicitly considered to be constexpr. // FIXME: Only applying this to the first declaration seems problematic, as // simple reorderings can affect the meaning of the program. - if (First && !FD->isConstexpr() && Info.Constexpr) + if ((First && !FD->isConstexpr() && Info.Constexpr) || + getLangOpts().CPlusPlus23) ---------------- Fznamznon wrote:
> isn't Info.Constexpr always true in c++ mode? C++23, sorry Not sure it is always true even for C++23, I think it is true when the operator produces constexpr. Otherwise we would have never emitted warn_cxx23_compat_defaulted_comparison_constexpr_mismatch a bit earlier than my change, and we do. > The error message should be different though, right? something like "the call > to operator== is not a constant expression" ? In both cases it says "non-literal type 'ComparisonNonConstexpr' cannot be used in a constant expression". https://github.com/llvm/llvm-project/pull/77753 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits