Rationale: The two throwing single-object signatures of 
operator new and
operator delete are now specified to form the base functionality for
the other operators
.  This clarifies that replacing just these two signatures
changes others, even if they are not explicitly changed
.  Effect on original feature:
Valid C++ 2003 code that replaces global 
new or 
delete
operators may execute differently in this International Standard
.  For
example, the following program should write 
"custom deallocation" twice,
once for the single-object delete and once for the array delete
.
#include <cstdio>
#include <cstdlib>
#include <new>
void* operator new(std::size_t size) throw(std::bad_alloc) {
  return std::malloc(size);
}
void operator delete(void* ptr) throw() {
  std::puts("custom deallocation");
  std::free(ptr);
}
int main() {
  int* i = new int;
  delete i;                       int* a = new int[3];
  delete [] a;                  } Rationale: Consistent application of 
noexcept.  Effect on original feature:
Valid C++ 2003 code that assumes that global 
operator new only
throws 
std::bad_alloc may execute differently in this International
Standard
.