summaryrefslogtreecommitdiff
path: root/src/dynamic-array.hpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-12-21 15:57:06 -0500
committerJonathan Bradley <jcb@pikum.xyz>2023-12-23 11:42:23 -0500
commitbbd5fe6aedfd9288f3fd64754c700bfe9066b134 (patch)
treec10f87a4293eddba2c67dfbfe2fda0fda4d9e41a /src/dynamic-array.hpp
parenta2e3fea7c7c3efb882e0f48add74857691ef67dc (diff)
check assignable in DynArray
Diffstat (limited to 'src/dynamic-array.hpp')
-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;
}