Simplify Memory::memnew_arr_placement to always initialize memory, to force callers to make the decision of whether to initialize.

This commit is contained in:
Lukas Tenbrink
2025-05-19 20:52:08 +02:00
parent 7a0ab9d561
commit 4371aa864d
5 changed files with 16 additions and 16 deletions

View File

@ -196,19 +196,15 @@ T *memnew_arr_template(size_t p_elements) {
}
// Fast alternative to a loop constructor pattern.
template <bool p_ensure_zero = false, typename T>
template <typename T>
_FORCE_INLINE_ void memnew_arr_placement(T *p_start, size_t p_num) {
if constexpr (std::is_trivially_constructible_v<T> && !p_ensure_zero) {
// Don't need to do anything :)
(void)p_start;
(void)p_num;
} else if constexpr (is_zero_constructible_v<T>) {
if constexpr (is_zero_constructible_v<T>) {
// Can optimize with memset.
memset(static_cast<void *>(p_start), 0, p_num * sizeof(T));
} else {
// Need to use a for loop.
for (size_t i = 0; i < p_num; i++) {
memnew_placement(p_start + i, T);
memnew_placement(p_start + i, T());
}
}
}