diff options
author | Mike Stump <mrs@gcc.gnu.org> | 1997-02-04 03:09:59 +0000 |
---|---|---|
committer | Mike Stump <mrs@gcc.gnu.org> | 1997-02-04 03:09:59 +0000 |
commit | 55e777641fb97d3141471ed91237b6a7422f1340 (patch) | |
tree | a5e898710522ccb3215b019f5075d71eb7d6d704 /gcc | |
parent | 824b9a4c454aa73955f1f8c2e2650d9248bcd2b4 (diff) | |
download | gcc-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/new | 22 |
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 |