Is it required for user-defined and class-specific delete operators to ignore nullptr
as that operators from standard library do?
parallel discussion at google groups.
Is it required for user-defined and class-specific delete operators to ignore nullptr
as that operators from standard library do?
parallel discussion at google groups.
From [expr.delete],
If the value of the operand of the delete-expression is a null pointer value, it is unspecified whether a deallocation function will be called as described above.
So it sounds like your user defined or class specific delete operators to handle a nullptr
.
Elsewhere in [class.free], when describing deallocation functions for classes, classes with virtual destructors can have the deallocation function called based on the dynamic type. In that case the deallocation function would not need to check for nullptr.
From [basic.stc.dynamic]:
Any allocation and/or deallocation functions defined in a C++ program, including the default versions in the library, shall confrm to the semantics specified in 3.7.4.1 and 3.7.4.2.
From [basic.stc.dynamic.deallocation]:
The value of the first argument supplied to a deallocation function may be a null pointer value; if so, and if the deallocation function is one supplied in the standard library, the call has no effect.
If the argument given to a deallocation function in the standard library is a pointer that is not the null pointer value (4.11), the deallocation function shall deallocate the storage referenced by the pointer, ending the duration of the region of storage.
It's required that the deallocation function have no effect if provided a null pointer value. That basically is the same thing as requiring that the deallocation function ignore null pionter values.