OSDN Git Service

90th Cygnus<->FSF quick merge
authormrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 4 Feb 1997 03:09:59 +0000 (03:09 +0000)
committermrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 4 Feb 1997 03:09:59 +0000 (03:09 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@13605 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/inc/new

index 4bfb960..f4b0b97 100644 (file)
@@ -6,6 +6,7 @@
 
 #pragma interface "new"
 #include <stddef.h>
+#include <exception>
 
 extern "C++" {
 
@@ -13,8 +14,15 @@ extern "C++" {
 namespace std {
 #endif
 
-typedef void (*new_handler)();
-extern "C" new_handler set_new_handler (new_handler);
+  class bad_alloc : public exception {
+  public:
+    virtual const char* what() const throw() { return "bad_alloc"; }
+  };
+
+  struct nothrow_t {};
+  extern const nothrow_t nothrow;
+  typedef void (*new_handler)();
+  extern "C" new_handler set_new_handler (new_handler);
 
 #if 0
 } // namespace std
@@ -26,13 +34,15 @@ extern "C" void __default_new_handler (void);
 
 // replaceable signatures
 void *operator new (size_t);
+void *operator new (size_t, const nothrow_t&) throw();
 void *operator new[] (size_t);
-void operator delete (void *);
-void operator delete[] (void *);
+void *operator new[] (size_t, const nothrow_t&) throw();
+void operator delete (void *) throw();
+void operator delete[] (void *) throw();
 
 // default placement versions of operator new
-inline void *operator new(size_t, void *place) { return place; }
-inline void *operator new[](size_t, void *place) { return place; }
+inline void *operator new(size_t, void *place) throw() { return place; }
+inline void *operator new[](size_t, void *place) throw() { return place; }
 } // extern "C++"
 
 #endif