================
@@ -1595,8 +1606,21 @@ static bool IsOverloadOrOverrideImpl(Sema &SemaRef,
FunctionDecl *New,
// Allow overloading of functions with same signature and different
CUDA
// target attributes.
- if (NewTarget != OldTarget)
+ if (NewTarget != OldTarget) {
+ // Special case: non-constexpr function is allowed to override
+ // constexpr virtual function
----------------
Artem-B wrote:
I see. So, we have a distinction between implicit attribute derived from the
explicit one, and the implicit attributes conjured by compiler for the
compiler-generated code like special functions and lambdas. AFAICT we have no
good way to do so. E.g. telling apart inherited constructor with explicit HD
attributes and a default constructor with implicit HD attributes would require
more digging.
OK. Let's keep it narrow for now. We can consider relaxation if/when we have
actual use cases for it.
https://github.com/llvm/llvm-project/pull/121986
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits