diff options
| -rw-r--r-- | src/dynamic-array.hpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/dynamic-array.hpp b/src/dynamic-array.hpp index bcc0d43..307983d 100644 --- a/src/dynamic-array.hpp +++ b/src/dynamic-array.hpp @@ -163,7 +163,11 @@ template <typename T> inline void DynArray<T>::Push(const T &val) { } auto itemPtr = this->ptr + (sizeof(T) * this->elementCount); auto &targetItem = *reinterpret_cast<T *>(itemPtr); - targetItem = val; + if constexpr (std::is_assignable<T&, const T&>::value) { + targetItem = val; + } else { + memcpy(targetItem, val, sizeof(T)); + } this->elementCount += 1; } |
