#pragma once #include template inline void copy(T * dst, const T * src, int32_t n) noexcept { n = n / (sizeof (T)); while (n > 0) { *dst++ = *src++; n--; } } template inline void fill(T * dst, const T src, int32_t n) noexcept { n = n / (sizeof (T)); while (n > 0) { *dst++ = src; n--; } } template inline void move(T * dst, const T * src, int32_t n) noexcept { n = n / (sizeof (T)); if (dst < src) { // d s // 0123456789 while (n > 0) { *dst++ = *src++; n--; } } else { // s d // 0123456789 while (n) { n--; dst[n] = src[n]; } } }