Are you using C++11 or later?
The original operator new() declarations in C++98
throwing: void* operator new (std::size_t size) throw (std::bad_alloc); nothrow: void* operator new (std::size_t size, const std::nothrow_t& nothrow_value) throw(); placement: void* operator new (std::size_t size, void* ptr) throw();
Have been changed in C++11 to use noexcept keyword:
throwing: void* operator new (std::size_t size); nothrow: void* operator new (std::size_t size, const std::nothrow_t& nothrow_value) noexcept; placement: void* operator new (std::size_t size, void* ptr) noexcept;
from