namespace memory { template void move(T * dst, const T * src, const uint32_t n) { if (dst < src) { while (n > 0) { *d++ = *s++; n--; } } else { while (n > 0) { n--; d[n] = s[n]; } } } template inline void copy(T * dst, const T * src, const uint32_t n) { while (n > 0) { *dst++ = *src++; n--; } } }