57 #ifndef _STL_TEMPBUF_H
58 #define _STL_TEMPBUF_H 1
63 namespace std _GLIBCXX_VISIBILITY(default)
65 _GLIBCXX_BEGIN_NAMESPACE_VERSION
84 template<
typename _Tp>
88 const ptrdiff_t __max =
89 __gnu_cxx::__numeric_traits<ptrdiff_t>::__max /
sizeof(_Tp);
95 _Tp* __tmp =
static_cast<_Tp*
>(::operator
new(__len *
sizeof(_Tp),
111 template<
typename _Tp>
114 { ::operator
delete(__p, std::nothrow); }
122 template<
typename _ForwardIterator,
typename _Tp>
126 __glibcxx_class_requires(_ForwardIterator, _ForwardIteratorConcept)
129 typedef _Tp value_type;
130 typedef value_type* pointer;
131 typedef pointer iterator;
132 typedef ptrdiff_t size_type;
135 size_type _M_original_len;
148 {
return _M_original_len; }
153 {
return _M_buffer; }
158 {
return _M_buffer + _M_len; }
182 struct __uninitialized_construct_buf_dispatch
184 template<
typename _ForwardIterator,
typename _Tp>
186 __ucr(_ForwardIterator __first, _ForwardIterator __last,
189 if(__first == __last)
192 _ForwardIterator __cur = __first;
196 _GLIBCXX_MOVE(__value));
197 _ForwardIterator __prev = __cur;
199 for(; __cur != __last; ++__cur, ++__prev)
201 _GLIBCXX_MOVE(*__prev));
202 __value = _GLIBCXX_MOVE(*__prev);
207 __throw_exception_again;
213 struct __uninitialized_construct_buf_dispatch<true>
215 template<
typename _ForwardIterator,
typename _Tp>
217 __ucr(_ForwardIterator, _ForwardIterator, _Tp&) { }
230 template<
typename _ForwardIterator,
typename _Tp>
232 __uninitialized_construct_buf(_ForwardIterator __first,
233 _ForwardIterator __last,
236 typedef typename std::iterator_traits<_ForwardIterator>::value_type
239 std::__uninitialized_construct_buf_dispatch<
240 __has_trivial_constructor(_ValueType)>::
241 __ucr(__first, __last, __value);
244 template<
typename _ForwardIterator,
typename _Tp>
247 : _M_original_len(std::
distance(__first, __last)),
248 _M_len(0), _M_buffer(0)
253 value_type>(_M_original_len));
254 _M_buffer = __p.
first;
257 std::__uninitialized_construct_buf(_M_buffer, _M_buffer + _M_len,
265 __throw_exception_again;
269 _GLIBCXX_END_NAMESPACE_VERSION