summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dynamic-array.hpp6
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;
}