aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMike Stump <mrs@gcc.gnu.org>1997-02-04 03:09:59 +0000
committerMike Stump <mrs@gcc.gnu.org>1997-02-04 03:09:59 +0000
commit55e777641fb97d3141471ed91237b6a7422f1340 (patch)
treea5e898710522ccb3215b019f5075d71eb7d6d704 /gcc
parent824b9a4c454aa73955f1f8c2e2650d9248bcd2b4 (diff)
downloadgcc-55e777641fb97d3141471ed91237b6a7422f1340.zip
gcc-55e777641fb97d3141471ed91237b6a7422f1340.tar.gz
gcc-55e777641fb97d3141471ed91237b6a7422f1340.tar.bz2
90th Cygnus<->FSF quick merge
From-SVN: r13605
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/inc/new22
1 files changed, 16 insertions, 6 deletions
diff --git a/gcc/cp/inc/new b/gcc/cp/inc/new
index 4bfb960..f4b0b97 100644
--- a/gcc/cp/inc/new
+++ b/gcc/cp/inc/new
@@ -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