111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1994
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Hewlett-Packard Company
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1996,1997
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Silicon Graphics Computer Systems, Inc.
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1997
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Moscow Center for SPARC Technology
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1999
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Boris Fomitchev
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * This material is provided "as is", with absolutely no warranty expressed
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * or implied. Any use is at your own risk.
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Permission to use or copy this software for any purpose is hereby granted
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * without fee, provided the above notices are retained on all copies.
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Permission to modify the code and to distribute modified code is granted,
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * provided the above notices are retained, and a notice that the code was
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * modified is included with the above copyright notice.
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* NOTE: This is an internal header file, included by other STL headers.
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *   You should not attempt to use it directly.
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_INTERNAL_DBG_VECTOR_H
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STLP_INTERNAL_DBG_VECTOR_H
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_DBG_ITERATOR_H
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#  include <stl/debug/_iterator.h>
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STLP_NON_DBG_VECTOR _STLP_PRIV _STLP_NON_DBG_NAME(vector) <_Tp, _Alloc>
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_BEGIN_NAMESPACE
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_DEBUG_USE_DISTINCT_VALUE_TYPE_HELPERS)
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _Tp, class _Alloc>
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertinline _Tp*
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertvalue_type(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_VECTOR >&)
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ return (_Tp*)0; }
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _Tp, class _Alloc>
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertinline random_access_iterator_tag
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertiterator_category(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_VECTOR >&)
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ return random_access_iterator_tag(); }
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_MOVE_TO_PRIV_NAMESPACE
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _Tp, class _NcIt>
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct _Vector_const_traits;
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _Tp, class _NcIt>
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct _Vector_nonconst_traits {
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Nonconst_traits<_Tp> _BaseT;
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Tp value_type;
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Tp& reference;
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Tp* pointer;
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Vector_const_traits<_Tp, _NcIt> _ConstTraits;
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Vector_nonconst_traits<_Tp, _NcIt> _NonConstTraits;
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _Tp, class _NcIt>
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct _Vector_const_traits {
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Const_traits<_Tp> _BaseT;
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Tp value_type;
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef const _Tp& reference;
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef const _Tp* pointer;
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Vector_const_traits<_Tp, _NcIt> _ConstTraits;
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Vector_nonconst_traits<_Tp, _NcIt> _NonConstTraits;
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_TEMPLATE_NULL
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct _Vector_nonconst_traits<bool, _Bit_iterator> {
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Bit_iterator::value_type value_type;
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Bit_iterator::reference reference;
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Bit_iterator::pointer pointer;
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Vector_const_traits<bool, _Bit_iterator> _ConstTraits;
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Vector_nonconst_traits<bool, _Bit_iterator> _NonConstTraits;
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_TEMPLATE_NULL
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct _Vector_const_traits<bool, _Bit_iterator> {
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Bit_const_iterator::value_type value_type;
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Bit_const_iterator::reference reference;
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Bit_const_iterator::pointer pointer;
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Vector_const_traits<bool, _Bit_iterator> _ConstTraits;
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _Vector_nonconst_traits<bool, _Bit_iterator> _NonConstTraits;
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_MOVE_TO_STD_NAMESPACE
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _Tp, _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Tp>) >
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass vector :
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined (__DMC__)
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert             private
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert                     _STLP_PRIV __construct_checker< _STLP_NON_DBG_VECTOR >
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert             , public __stlport_class<vector<_Tp, _Alloc> >
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertprivate:
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _STLP_NON_DBG_VECTOR _Base;
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef vector<_Tp, _Alloc> _Self;
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _STLP_PRIV __construct_checker<_STLP_NON_DBG_VECTOR > _ConstructCheck;
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  _Base _M_non_dbg_impl;
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  _STLP_PRIV __owned_list _M_iter_list;
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic:
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  __IMPORT_CONTAINER_TYPEDEFS(_Base)
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _STLP_PRIV _DBG_iter<_Base,
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_PRIV _DbgTraits<_STLP_PRIV _Vector_nonconst_traits<value_type, typename _Base::iterator> > > iterator;
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef _STLP_PRIV _DBG_iter<_Base,
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_PRIV _DbgTraits<_STLP_PRIV _Vector_const_traits<value_type, typename _Base::iterator> > > const_iterator;
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertprivate:
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void _Invalidate_all()
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  { _M_iter_list._Invalidate_all(); }
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void _Invalidate_iterator(const iterator& __it)
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  { _STLP_PRIV __invalidate_iterator(&_M_iter_list, __it); }
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void _Invalidate_iterators(const iterator& __first, const iterator& __last)
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  { _STLP_PRIV __invalidate_range(&_M_iter_list, __first, __last); }
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void _Check_Overflow(size_type __nb) {
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (size() + __nb > capacity())
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert      _Invalidate_all();
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void _Compare_Capacity (size_type __old_capacity) {
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (capacity() > __old_capacity) {
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert      _Invalidate_all();
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic:
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS;
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  allocator_type get_allocator() const { return _M_non_dbg_impl.get_allocator(); }
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  iterator begin()             { return iterator(&_M_iter_list, _M_non_dbg_impl.begin()); }
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  const_iterator begin() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.begin()); }
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  iterator end()               { return iterator(&_M_iter_list, _M_non_dbg_impl.end()); }
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  const_iterator end() const   { return const_iterator(&_M_iter_list, _M_non_dbg_impl.end()); }
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  reverse_iterator rbegin()             { return reverse_iterator(end()); }
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); }
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  reverse_iterator rend()               { return reverse_iterator(begin()); }
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  const_reverse_iterator rend() const   { return const_reverse_iterator(begin()); }
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  size_type size() const        { return _M_non_dbg_impl.size(); }
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  size_type max_size() const    { return _M_non_dbg_impl.max_size(); }
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  size_type capacity() const    { return _M_non_dbg_impl.capacity(); }
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  bool empty() const            { return _M_non_dbg_impl.empty(); }
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  reference operator[](size_type __n) {
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_VERBOSE_ASSERT(__n < size(), _StlMsg_OUT_OF_BOUNDS)
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return _M_non_dbg_impl[__n];
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  const_reference operator[](size_type __n) const {
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_VERBOSE_ASSERT(__n < size(), _StlMsg_OUT_OF_BOUNDS)
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return _M_non_dbg_impl[__n];
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  reference at(size_type __n) { return _M_non_dbg_impl.at(__n); }
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  const_reference at(size_type __n) const { return _M_non_dbg_impl.at(__n); }
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  explicit vector(const allocator_type& __a = allocator_type())
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : _M_non_dbg_impl(__a), _M_iter_list(&_M_non_dbg_impl)  {}
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined(_STLP_DONT_SUP_DFLT_PARAM)
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  explicit vector(size_type __n, const _Tp& __x = _Tp(),
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  vector(size_type __n, const _Tp& __x,
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert         const allocator_type& __a = allocator_type())
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : _M_non_dbg_impl(__n, __x, __a), _M_iter_list(&_M_non_dbg_impl) {}
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined(_STLP_DONT_SUP_DFLT_PARAM)
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  explicit vector(size_type __n)
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : _M_non_dbg_impl(__n), _M_iter_list(&_M_non_dbg_impl) {}
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  vector(const _Self& __x)
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : _ConstructCheck(__x), _M_non_dbg_impl(__x._M_non_dbg_impl), _M_iter_list(&_M_non_dbg_impl) {}
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined (_STLP_NO_MOVE_SEMANTIC)
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  vector(__move_source<_Self> src)
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : _M_non_dbg_impl(__move_source<_Base>(src.get()._M_non_dbg_impl)),
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert      _M_iter_list(&_M_non_dbg_impl) {
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#  if defined (_STLP_NO_EXTENSIONS) || (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL)
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    src.get()._M_iter_list._Invalidate_all();
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#  else
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    src.get()._M_iter_list._Set_owner(_M_iter_list);
20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#  endif
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_MEMBER_TEMPLATES)
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  template <class _InputIterator>
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  vector(_InputIterator __first, _InputIterator __last,
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert         const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL)
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : _ConstructCheck(__first, __last),
21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert      _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last), __a),
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert      _M_iter_list(&_M_non_dbg_impl) {}
21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#  if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS)
21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  template <class _InputIterator>
21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  vector(_InputIterator __first, _InputIterator __last)
21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : _ConstructCheck(__first, __last),
21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert      _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)),
21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert      _M_iter_list(&_M_non_dbg_impl) {}
21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#  endif
22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  vector(const _Tp* __first, const _Tp* __last,
22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert         const allocator_type& __a = allocator_type())
22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : _ConstructCheck(__first, __last), _M_non_dbg_impl(__first, __last, __a),
22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_iter_list(&_M_non_dbg_impl) {}
22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  // mysterious VC++ bug ?
22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  vector(const_iterator __first, const_iterator __last ,
22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert         const allocator_type& __a = allocator_type())
22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    : _ConstructCheck(__first, __last),
23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert      _M_non_dbg_impl(__first._M_iterator, __last._M_iterator, __a),
23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_iter_list(&_M_non_dbg_impl) {}
23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* _STLP_MEMBER_TEMPLATES */
23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  _Self& operator=(const _Self& __x) {
23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (this != &__x) {
23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert      _Invalidate_all();
23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert      _M_non_dbg_impl = __x._M_non_dbg_impl;
23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return *this;
24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void reserve(size_type __n) {
24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (capacity() < __n)
24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert      _Invalidate_all();
24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_non_dbg_impl.reserve(__n);
24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  reference front() {
24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER)
25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return *begin();
25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  const_reference front() const {
25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER)
25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return *begin();
25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  reference back() {
25711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER)
25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return *(--end());
25911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
26011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  const_reference back() const {
26111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER)
26211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return *(--end());
26311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
26411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
26511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void swap(_Self& __x) {
26611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_iter_list._Swap_owners(__x._M_iter_list);
26711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_non_dbg_impl.swap(__x._M_non_dbg_impl);
26811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
26911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER)
27011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void _M_swap_workaround(_Self& __x) { swap(__x); }
27111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
27211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
27311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined(_STLP_DONT_SUP_DFLT_PARAM)
27411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  iterator insert(iterator __pos, const _Tp& __x = _Tp()) {
27511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
27611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  iterator insert(iterator __pos, const _Tp& __x) {
27711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /*_STLP_DONT_SUP_DFLT_PARAM*/
27811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos))
27911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _Check_Overflow(1);
28011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return iterator(&_M_iter_list, _M_non_dbg_impl.insert(__pos._M_iterator, __x));
28111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
28211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
28311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined(_STLP_DONT_SUP_DFLT_PARAM)
28411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  iterator insert(iterator __pos)
28511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  { return insert(__pos, _STLP_DEFAULT_CONSTRUCTED(_Tp)); }
28611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /*_STLP_DONT_SUP_DFLT_PARAM*/
28711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
28811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_MEMBER_TEMPLATES)
28911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  // Check whether it's an integral type.  If so, it's not an iterator.
29011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  template <class _InputIterator>
29111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void insert(iterator __pos,
29211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert              _InputIterator __first, _InputIterator __last) {
29311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last))
29411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos))
29511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_type __old_capacity = capacity();
29611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_non_dbg_impl.insert(__pos._M_iterator,
29711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert                           _STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last));
29811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _Compare_Capacity(__old_capacity);
29911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
30011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
30111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined (_STLP_MEMBER_TEMPLATES)
30211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void insert (iterator __pos,
30311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert               const value_type *__first, const value_type *__last) {
30411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first,__last))
30511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos))
30611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_type __old_capacity = capacity();
30711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_non_dbg_impl.insert(__pos._M_iterator, __first, __last);
30811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _Compare_Capacity(__old_capacity);
30911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
31011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
31111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
31211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined (_STLP_MEMBER_TEMPLATES) || !defined (_STLP_NO_METHOD_SPECIALIZATION)
31311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void insert(iterator __pos,
31411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert              const_iterator __first, const_iterator __last) {
31511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first,__last))
31611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos))
31711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    //Sequence requirements 23.1.1 Table 67:
31811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_not_owner(&_M_iter_list, __first));
31911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_type __old_capacity = capacity();
32011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator);
32111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _Compare_Capacity(__old_capacity);
32211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
32311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void insert(iterator __pos,
32411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert              iterator __first, iterator __last) {
32511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first,__last))
32611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos))
32711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    //Sequence requirements 23.1.1 Table 67:
32811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_not_owner(&_M_iter_list, __first));
32911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_type __old_capacity = capacity();
33011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator);
33111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _Compare_Capacity(__old_capacity);
33211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
33311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
33411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
33511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void insert (iterator __pos, size_type __n, const _Tp& __x){
33611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos))
33711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _Check_Overflow(__n);
33811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_non_dbg_impl.insert(__pos._M_iterator, __n, __x);
33911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
34011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
34111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void pop_back() {
34211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER)
34311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _Invalidate_iterator(end());
34411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_non_dbg_impl.pop_back();
34511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
34611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  iterator erase(iterator __pos) {
34711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos))
34811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos))
34911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _Invalidate_iterators(__pos, end());
35011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return iterator(&_M_iter_list, _M_non_dbg_impl.erase(__pos._M_iterator));
35111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
35211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  iterator erase(iterator __first, iterator __last) {
35311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end()))
35411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _Invalidate_iterators(__first, end());
35511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return iterator(&_M_iter_list, _M_non_dbg_impl.erase(__first._M_iterator, __last._M_iterator));
35611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
35711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
35811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined (_STLP_DONT_SUP_DFLT_PARAM)
35911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void resize(size_type __new_size, const _Tp& __x = _STLP_DEFAULT_CONSTRUCTED(_Tp)) {
36011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
36111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void resize(size_type __new_size, const _Tp& __x) {
36211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /*_STLP_DONT_SUP_DFLT_PARAM*/
36311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (__new_size > capacity()) {
36411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert      _Invalidate_all();
36511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
36611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else if (__new_size < size()) {
36711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert      _Invalidate_iterators(begin() + __new_size, end());
36811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
36911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_non_dbg_impl.resize(__new_size, __x);
37011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
37111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
37211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_DONT_SUP_DFLT_PARAM)
37311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void resize(size_type __new_size) { resize(__new_size, _STLP_DEFAULT_CONSTRUCTED(_Tp)); }
37411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
37511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
37611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (_STLP_MEMBER_TEMPLATES)
37711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  template <class _InputIterator>
37811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void assign(_InputIterator __first, _InputIterator __last) {
37911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first,__last))
38011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _Invalidate_all();
38111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_non_dbg_impl.assign(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last));
38211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
38311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
38411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertprivate:
38511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void _M_assign(const value_type *__first, const value_type *__last) {
38611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _Invalidate_all();
38711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_non_dbg_impl.assign(__first, __last);
38811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
38911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic:
39011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void assign(const value_type *__first, const value_type *__last) {
39111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first,__last))
39211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_assign(__first, __last);
39311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
39411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
39511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void assign(const_iterator __first, const_iterator __last) {
39611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first,__last))
39711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_assign(__first._M_iterator, __last._M_iterator);
39811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
39911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
40011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
40111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic:
40211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void assign(size_type __n, const _Tp& __val) {
40311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _Invalidate_all();
40411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_non_dbg_impl.assign(__n, __val);
40511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
40611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
40711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void clear() {
40811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _Invalidate_all();
40911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_non_dbg_impl.clear();
41011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
41111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  void push_back(const _Tp& __x) {
41211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _Check_Overflow(1);
41311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _M_non_dbg_impl.push_back(__x);
41411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
41511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
41611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
41711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_END_NAMESPACE
41811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
41911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#undef _STLP_NON_DBG_VECTOR
42011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
42111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* _STLP_DBG_VECTOR_H */
42211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
42311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Local Variables:
42411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// mode:C++
42511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// End:
426