[clang] Initial implementation of P2719 (PR #113510)

Erich Keane via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 25 09:54:55 PDT 2024


================
@@ -2474,19 +2474,46 @@ bool CXXMethodDecl::isUsualDeallocationFunction(
       getOverloadedOperator() != OO_Array_Delete)
     return false;
 
+  auto NumParams = getNumParams();
+  bool IsTypeAware = IsTypeAwareOperatorNewOrDelete();
+
   // C++ [basic.stc.dynamic.deallocation]p2:
   //   A template instance is never a usual deallocation function,
   //   regardless of its signature.
-  if (getPrimaryTemplate())
-    return false;
+  if (auto *PrimaryTemplate = getPrimaryTemplate()) {
+    // Addendum: a template instance is a usual deallocation function if there
+    // is a single template parameter, that parameter is a type, only the first
+    // parameter is dependent, and that parameter is a specialization of
+    // std::type_identity
+    if (!IsTypeAware) {
----------------
erichkeane wrote:

What is gonig on here?  isn't this always a dead branch?

https://github.com/llvm/llvm-project/pull/113510


More information about the cfe-commits mailing list