old-nall/vector/assign.hpp

29 lines
673 B
C++
Raw Permalink Normal View History

2016-07-03 11:35:22 +00:00
#pragma once
namespace nall {
template<typename T> auto vector<T>::operator=(const vector<T>& source) -> vector<T>& {
if(this == &source) return *this;
_pool = (T*)memory::allocate(sizeof(T) * source._size);
_size = source._size;
_left = 0;
_right = 0;
for(uint n : range(_size)) new(_pool + n) T(source._pool[n]);
return *this;
}
template<typename T> auto vector<T>::operator=(vector<T>&& source) -> vector<T>& {
if(this == &source) return *this;
_pool = source._pool;
_size = source._size;
_left = source._left;
_right = source._right;
source._pool = nullptr;
source._size = 0;
source._left = 0;
source._right = 0;
return *this;
}
}