57 #ifndef _STL_TEMPBUF_H
58 #define _STL_TEMPBUF_H 1
64 _GLIBCXX_BEGIN_NAMESPACE(std)
83 template<typename _Tp>
87 const ptrdiff_t __max =
88 __gnu_cxx::__numeric_traits<ptrdiff_t>::__max /
sizeof(_Tp);
94 _Tp* __tmp =
static_cast<_Tp*
>(::operator
new(__len *
sizeof(_Tp),
110 template<
typename _Tp>
113 { ::operator
delete(__p, std::nothrow); }
121 template<
typename _ForwardIterator,
typename _Tp>
125 __glibcxx_class_requires(_ForwardIterator, _ForwardIteratorConcept)
128 typedef _Tp value_type;
129 typedef value_type* pointer;
130 typedef pointer iterator;
131 typedef ptrdiff_t size_type;
134 size_type _M_original_len;
146 requested_size()
const
147 {
return _M_original_len; }
152 {
return _M_buffer; }
157 {
return _M_buffer + _M_len; }
173 _Temporary_buffer(
const _Temporary_buffer&);
176 operator=(
const _Temporary_buffer&);
179 template<
typename _ForwardIterator,
typename _Tp>
180 _Temporary_buffer<_ForwardIterator, _Tp>::
181 _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last)
182 : _M_original_len(std::
distance(__first, __last)),
183 _M_len(0), _M_buffer(0)
188 value_type>(_M_original_len));
189 _M_buffer = __p.
first;
191 if (!__is_pod(_Tp) && _M_len > 0)
199 __throw_exception_again;
203 _GLIBCXX_END_NAMESPACE