@@ -206,8 +206,8 @@ class CowData {
206206
207207 _FORCE_INLINE_ void remove_at (Size p_index);
208208
209- Error insert (Size p_pos, const T &p_val);
210- Error push_back (const T &p_val);
209+ Error insert (Size p_pos, T & &p_val);
210+ Error push_back (T & &p_val);
211211
212212 _FORCE_INLINE_ operator Span<T>() const { return Span<T>(ptr (), size ()); }
213213 _FORCE_INLINE_ Span<T> span () const { return operator Span<T>(); }
@@ -296,7 +296,7 @@ void CowData<T>::remove_at(Size p_index) {
296296}
297297
298298template <typename T>
299- Error CowData<T>::insert(Size p_pos, const T &p_val) {
299+ Error CowData<T>::insert(Size p_pos, T & &p_val) {
300300 const Size new_size = size () + 1 ;
301301 ERR_FAIL_INDEX_V (p_pos, new_size, ERR_INVALID_PARAMETER);
302302
@@ -326,13 +326,13 @@ Error CowData<T>::insert(Size p_pos, const T &p_val) {
326326 }
327327
328328 // Create the new element at the given index.
329- memnew_placement (_ptr + p_pos, T (p_val));
329+ memnew_placement (_ptr + p_pos, T (std::move ( p_val) ));
330330
331331 return OK;
332332}
333333
334334template <typename T>
335- Error CowData<T>::push_back(const T &p_val) {
335+ Error CowData<T>::push_back(T & &p_val) {
336336 const Size new_size = size () + 1 ;
337337
338338 if (!_ptr) {
@@ -361,7 +361,7 @@ Error CowData<T>::push_back(const T &p_val) {
361361 }
362362
363363 // Create the new element at the given index.
364- memnew_placement (_ptr + new_size - 1 , T (p_val));
364+ memnew_placement (_ptr + new_size - 1 , T (std::move ( p_val) ));
365365
366366 return OK;
367367}
0 commit comments