template <class _Tp, class _Alloc> void _VECTOR_IMPL<_Tp, _Alloc> ::_M_insert_overflow( pointer __pos, const _Tp& __x, const __true_type& /**//*_TrivialCpy*/ , size_type __fill_len, bool __atend ) ... { const size_type __old_size = size(); /**//** * Increase the capacity, there's efficiency issue here why *double* * size of the original */ const size_type __len = __old_size + (max)(__old_size, __fill_len); pointer __new_start = this->_M_end_of_storage.allocate(__len); /**//** * use memmove rather than reassignment(operator=) of every * single element */ pointer __new_finish = (pointer)__copy_trivial(this->_M_start, __pos, __new_start); // handle insertion __new_finish = __fill_n(__new_finish, __fill_len, __x); if (!__atend) __new_finish = (pointer)__copy_trivial( __pos, this->_M_finish, __new_finish); // copy remainder // deallocate the original memory _M_clear(); // attached to the new memory _M_set(__new_start, __new_finish, __new_start + __len // _M_end_of_storage._M_data );}