// RUN: %clang_cc1 -triple arm64-apple-macosx -fsyntax-only -verify %s -Wno-ext-cxx-type-aware-allocators -std=c++26 -fsized-deallocation -faligned-allocation // RUN: %clang_cc1 -triple arm64-apple-macosx -fsyntax-only -verify %s -Wno-ext-cxx-type-aware-allocators -std=c++26 -fno-sized-deallocation -faligned-allocation // RUN: %clang_cc1 -triple arm64-apple-macosx -fsyntax-only -verify %s -Wno-ext-cxx-type-aware-allocators -std=c++26 -fno-sized-deallocation -fno-aligned-allocation // RUN: %clang_cc1 -triple arm64-apple-macosx -fsyntax-only -verify %s -Wno-ext-cxx-type-aware-allocators -std=c++26 -fsized-deallocation -fno-aligned-allocation namespace std { template struct type_identity {}; enum class align_val_t : __SIZE_TYPE__ {}; struct destroying_delete_t { explicit destroying_delete_t() = default; }; } using size_t = __SIZE_TYPE__; struct TestType {}; template struct TemplateTestType {}; // Valid free declarations void *operator new(std::type_identity, size_t, std::align_val_t); // #1 void *operator new(std::type_identity, size_t, std::align_val_t, TestType&); // #2 template void *operator new(std::type_identity, size_t, std::align_val_t); // #3 template void *operator new(std::type_identity, size_t, std::align_val_t, TestType&); // #4 template void *operator new(std::type_identity>, size_t, std::align_val_t, TestType&); // #5 template void *operator new(std::type_identity, size_t, std::align_val_t, TemplateTestType&); // #6 template