summarylogtreecommitdiffstats
path: root/flext-cpp11.patch
blob: 23d30e9eb8f8dadf9586ea493a883f7fadee4778 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
diff --git a/source/flsupport.h b/source/flsupport.h
index e6a7678..b016264 100644
--- a/source/flsupport.h
+++ b/source/flsupport.h
@@ -63,9 +63,11 @@ public:
 #ifdef FLEXT_USE_CMEM
     inline void *operator new(size_t bytes) { return ::operator new(bytes); }
     inline void operator delete(void *blk) { ::operator delete(blk); }
+    inline void operator delete(void *blk, size_t) { ::operator delete(blk); }
 
     inline void *operator new[](size_t bytes) { return ::operator new[](bytes); }
     inline void operator delete[](void *blk) { ::operator delete[](blk); }
+    inline void operator delete[](void *blk, size_t) { ::operator delete[](blk); }
 
     static bool MemCheck(void *) { return true; }
 #else
@@ -76,10 +78,12 @@ public:
     void *operator new(size_t bytes);
     //! Overloaded delete method
     void operator delete(void *blk);
+    void operator delete(void *blk, size_t) { operator delete(blk); }
 
 #ifndef __MRC__ // doesn't allow new[] overloading?!
     inline void *operator new[](size_t bytes) { return operator new(bytes); }
     inline void operator delete[](void *blk) { operator delete(blk); }
+    inline void operator delete[](void *blk, size_t) { operator delete(blk); }
 #endif
 
 #ifdef FLEXT_DEBUGMEM
@@ -118,7 +122,10 @@ public:
 // MFC doesn't like global overloading of allocators
 // anyway, who likes MFC
 
-#if !defined(_MSC_VER) && !defined(__BORLANDC__)
+#if __cplusplus >= 201103L
+#define NEWTHROW
+#define DELTHROW noexcept
+#elif !defined(_MSC_VER) && !defined(__BORLANDC__)
 #define NEWTHROW throw(std::bad_alloc)
 #define DELTHROW throw()
 #else
@@ -129,9 +136,11 @@ public:
 // define global new/delete operators
 inline void *operator new(size_t bytes) NEWTHROW { return flext_root::operator new(bytes); }
 inline void operator delete(void *blk) DELTHROW { flext_root::operator delete(blk); }
+inline void operator delete(void *blk, size_t) DELTHROW { flext_root::operator delete(blk); }
 #ifndef __MRC__ // doesn't allow new[] overloading?!
 inline void *operator new[](size_t bytes) NEWTHROW { return flext_root::operator new[](bytes); }
 inline void operator delete[](void *blk) DELTHROW { flext_root::operator delete[](blk); }
+inline void operator delete[](void *blk, size_t) DELTHROW { flext_root::operator delete[](blk); }
 #endif
 
 #endif // FLEXT_USE_CMEM