llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Nikolas Klauser (philnik777) <details> <summary>Changes</summary> Fixes #<!-- -->107777 --- Full diff: https://github.com/llvm/llvm-project/pull/107815.diff 2 Files Affected: - (modified) clang/lib/Sema/SemaExprCXX.cpp (+2-1) - (modified) clang/test/SemaCXX/type-traits.cpp (+18) ``````````diff diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index e086c601107041..5f7f4eee632bf1 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -5168,7 +5168,8 @@ static bool HasNonDeletedDefaultedEqualityComparison(Sema &S, // const ClassT& obj; OpaqueValueExpr Operand( - {}, Decl->getTypeForDecl()->getCanonicalTypeUnqualified().withConst(), + KeyLoc, + Decl->getTypeForDecl()->getCanonicalTypeUnqualified().withConst(), ExprValueKind::VK_LValue); UnresolvedSet<16> Functions; // obj == obj; diff --git a/clang/test/SemaCXX/type-traits.cpp b/clang/test/SemaCXX/type-traits.cpp index b8a9db103782c3..91ef7786f11bb9 100644 --- a/clang/test/SemaCXX/type-traits.cpp +++ b/clang/test/SemaCXX/type-traits.cpp @@ -4147,6 +4147,24 @@ class Template {}; // Make sure we don't crash when instantiating a type static_assert(!__is_trivially_equality_comparable(Template<Template<int>>)); + +struct S operator==(S, S); + +template <class> struct basic_string_view {}; + +struct basic_string { + operator basic_string_view<int>() const; +}; + +template <class T> +const bool is_trivially_equality_comparable = __is_trivially_equality_comparable(T); + +template <int = is_trivially_equality_comparable<basic_string> > +void find(); + +void func() { find(); } + + namespace hidden_friend { struct TriviallyEqualityComparable { `````````` </details> https://github.com/llvm/llvm-project/pull/107815 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits