void VectorBase::Copy( const VectorBase& vector, SizeType elementSize ) { if( this != &vector ) { // release old data Release(); // reserve space based on source capacity const SizeType capacity = vector.Capacity(); Reserve( capacity, elementSize ); // copy over whole data const SizeType wholeAllocation = sizeof(SizeType) * 2 + capacity * elementSize; SizeType* srcData = reinterpret_cast< SizeType* >( vector.mData ); SizeType* dstData = reinterpret_cast< SizeType* >( mData ); memcpy( dstData - 2, srcData - 2, wholeAllocation ); } }