20 #ifndef COMMON_POISON_H 21 #define COMMON_POISON_H 56 void *
memset (T *s,
int c,
size_t n) =
delete;
58 #if HAVE_IS_TRIVIALLY_COPYABLE 68 std::is_trivially_copyable<T>>
73 template <
typename D,
typename S>
74 using BothAreRelocatable
77 template <
typename D,
typename S,
79 void *memcpy (D *dest,
const S *src,
size_t n) =
delete;
81 template <
typename D,
typename S,
83 void *memmove (D *dest,
const S *src,
size_t n) =
delete;
96 template <
typename T,
typename = gdb::Requires<gdb::Not<IsFreeable<T>>>>
97 void free (T *ptr) =
delete;
104 data type. Use operator new instead.");
109 #define XNEW(T) xnew<T>() 116 data type. Use operator new instead.");
121 #define XCNEW(T) xcnew<T>() 128 data type. Use operator delete instead.");
133 #define XDELETE(P) xdelete (P) 140 non-POD data type. Use operator new[] (or std::vector) instead.");
145 #define XNEWVEC(T, N) xnewvec<T> (N) 152 non-POD data type. Use operator new[] (or std::vector) instead.");
157 #define XCNEWVEC(T, N) xcnewvec<T> (N) 164 non-POD data type.");
169 #define XRESIZEVEC(T, P, N) xresizevec<T> (P, N) 176 non-POD data type. Use operator delete[] (or std::vector) instead.");
181 #define XDELETEVEC(P) xdeletevec (P) 188 non-POD data type.");
193 #define XNEWVAR(T, S) xnewvar<T> (S) 200 non-POD data type.");
205 #define XCNEWVAR(T, S) xcnewvar<T> (S) 212 non-POD data type.");
217 #define XRESIZEVAR(T, P, S) xresizevar<T> (P, S)
static void xdeletevec(T *p)
static T * xnewvec(size_t n)
static void xdelete(T *p)
void * memset(T *s, int c, size_t n)=delete
static T * xcnewvec(size_t n)
static T * xresizevec(T *p, size_t n)
static T * xnewvar(size_t s)
#define XRESIZEVEC(T, P, N)
static T * xcnewvar(size_t s)
typename std::enable_if< Condition::value, void >::type Requires
#define XRESIZEVAR(T, P, S)
static T * xresizevar(T *p, size_t s)
std::is_pod< T > IsMallocable