On freestanding implementations,
it is implementation-defined
whether the default versions of the replaceable global allocation functions
satisfy the required behaviors
described in [new.delete.single] and [new.delete.array].
A freestanding implementation's default versions of
the replaceable global allocation functions
can cause undefined behavior when invoked.
During constant evaluation,
the behaviors of those default versions are irrelevant,
as those calls are omitted ([expr.new]).
— end note]
Recommended practice: If any of the default versions of the replaceable global allocation functions
meet the requirements of a hosted implementation, they all should.