2 template < typename _Tp > class new_allocator {
5 template < typename _CharT > struct char_traits;
6 template < typename _Tp > class allocator:public new_allocator < _Tp > {
9 template < typename _CharT, typename _Traits =
10 char_traits < _CharT >, typename _Alloc =
11 allocator < _CharT > >class basic_string;
12 typedef basic_string < char >string;
13 template < typename _CharT, typename _Traits,
14 typename _Alloc > class basic_string {
19 if (this != &_S_empty_rep())
20 if (foo(&this->_M_refcount)) ;
23 public: private:mutable _Alloc _M_dataplus;
24 _Rep *_M_rep() const {
26 static _Rep & _S_empty_rep() {
28 public: basic_string():_M_dataplus(_S_empty_rep()._M_refdata(),
32 _M_rep()->_M_dispose();
34 _Alloc get_allocator() const {
36 template < class T > class intrusive_ptr {
40 intrusive_ptr_release(px);
44 template < typename T > struct intrusive_base {
45 friend void intrusive_ptr_release(T * ptr) {
48 struct si:intrusive_base < si > {
49 intrusive_ptr < si > parent;
52 string normalize_id(string)
56 void add_id_to_section(string & id)
60 intrusive_ptr < si > parent;