The deallocation function's name is looked up by searching for it in the scope of the promise type
.  If nothing is found, a search is performed in the
global scope
.  If both a usual deallocation
function with only a pointer parameter and a usual deallocation function with
both a pointer parameter and a size parameter are found, then the selected deallocation
function shall be the one with two parameters
.  Otherwise, the selected
deallocation function shall be the function with one parameter
.  If no usual
deallocation function is found, the program is ill-formed
.  The selected deallocation function shall be called with the address of the
block of storage to be reclaimed as its first argument
.  If a deallocation
function with a parameter of type 
std::size_t is used, the size of
the block is passed as the corresponding argument
.