Allocator: Fail building when trying to MEM_delete a void pointer
`MEM_delete()` is designed for type safe destruction and freeing, void pointers make that impossible. Was reviewing a patch that was trying to free a C-style custom data pointer this way. Apparently MSVC compiles this just fine, other compilers error out. Make sure this is a build error on all platforms with a useful message.
This commit is contained in:
@@ -281,6 +281,8 @@ inline T *MEM_new(const char *allocation_name, Args &&...args)
|
||||
*/
|
||||
template<typename T> inline void MEM_delete(const T *ptr)
|
||||
{
|
||||
static_assert(!std::is_void_v<T>,
|
||||
"MEM_delete on a void pointer not possible. Cast it to a non-void type?");
|
||||
if (ptr == nullptr) {
|
||||
/* Support #ptr being null, because C++ `delete` supports that as well. */
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user