181 struct __uninitialized_construct_buf_dispatch
183 template<
typename _Po
inter,
typename _ForwardIterator>
185 __ucr(_Pointer __first, _Pointer __last,
186 _ForwardIterator __seed)
188 if(__first == __last)
191 _Pointer __cur = __first;
195 _GLIBCXX_MOVE(*__seed));
196 _Pointer __prev = __cur;
198 for(; __cur != __last; ++__cur, ++__prev)
200 _GLIBCXX_MOVE(*__prev));
201 *__seed = _GLIBCXX_MOVE(*__prev);
206 __throw_exception_again;
212 struct __uninitialized_construct_buf_dispatch<true>
214 template<
typename _Po
inter,
typename _ForwardIterator>
216 __ucr(_Pointer, _Pointer, _ForwardIterator) { }
229 template<
typename _Po
inter,
typename _ForwardIterator>
231 __uninitialized_construct_buf(_Pointer __first, _Pointer __last,
232 _ForwardIterator __seed)
234 typedef typename std::iterator_traits<_Pointer>::value_type
237 std::__uninitialized_construct_buf_dispatch<
238 __has_trivial_constructor(_ValueType)>::
239 __ucr(__first, __last, __seed);
242 template<
typename _ForwardIterator,
typename _Tp>
246 _M_len(0), _M_buffer(0)
251 value_type>(_M_original_len));
252 _M_buffer = __p.first;
255 std::__uninitialized_construct_buf(_M_buffer, _M_buffer + _M_len,
263 __throw_exception_again;