static inline void Construct(TYPE* base, size_t count) \
{ (void)base; (void)count; } \
static inline void Destroy(TYPE* base, size_t count) \
{ (void)base; (void)count; } \
static inline void Copy(TYPE* to, const TYPE* from, size_t count = 1) \
{ if (count == 1) *to = *from; else memcpy(to, from, (sizeof(TYPE[2])/2)*count); } \
static inline void MoveBefore(TYPE* to, TYPE* from, size_t count = 1) \
{ if (count == 1) *to = *from; else memcpy(to, from, (sizeof(TYPE[2])/2)*count); } \
static inline void MoveAfter(TYPE* to, TYPE* from, size_t count = 1) \
{ if (count == 1) *to = *from; else memmove(to, from, (sizeof(TYPE[2])/2)*count); } \
static inline void Assign(TYPE* to, const TYPE* from, size_t count = 1) \
{ if (count == 1) *to = *from; else memcpy(to, from, (sizeof(TYPE[2])/2)*count); } \