Use type-level operator delete overload when appropriate in jkrDelete

Found by Lars
This commit is contained in:
PJB3005
2026-03-14 17:55:19 +01:00
parent 197e59896e
commit 2f38d70db8
+12 -1
View File
@@ -276,7 +276,18 @@ void jkrDelete(T* ptr) {
return;
}
ptr->~T();
operator delete(ptr, JKRHeapToken::Dummy);
if constexpr (requires { T::operator delete(ptr, JKRHeapToken::Dummy); }) {
T::operator delete(ptr, JKRHeapToken::Dummy);
} else if constexpr (requires { T::operator delete(ptr, sizeof(T), JKRHeapToken::Dummy); }) {
T::operator delete(ptr, sizeof(T), JKRHeapToken::Dummy);
} else if constexpr (requires { T::operator delete(ptr); }) {
T::operator delete(ptr);
} else if constexpr (requires { T::operator delete(ptr, sizeof(T)); }) {
T::operator delete(ptr, sizeof(T));
} else {
operator delete(ptr, JKRHeapToken::Dummy);
}
}
template<>