OLD | NEW |
(Empty) | |
| 1 namespace std |
| 2 { |
| 3 /** |
| 4 * @brief The "standard" allocator, as per [20.4]. |
| 5 * |
| 6 * The private _Alloc is "SGI" style. (See comments at the top |
| 7 * of stl_alloc.h.) |
| 8 * |
| 9 * The underlying allocator behaves as follows. |
| 10 * - __default_alloc_template is used via two typedefs |
| 11 * - "__single_client_alloc" typedef does no locking for threads |
| 12 * - "__alloc" typedef is threadsafe via the locks |
| 13 * - __new_alloc is used for memory requests |
| 14 * |
| 15 * (See @link Allocators allocators info @endlink for more.) |
| 16 */ |
| 17 template<typename _Tp> |
| 18 class allocator |
| 19 { |
| 20 public: |
| 21 typedef size_t size_type; |
| 22 typedef ptrdiff_t difference_type; |
| 23 typedef _Tp* pointer; |
| 24 typedef const _Tp* const_pointer; |
| 25 typedef _Tp& reference; |
| 26 typedef const _Tp& const_reference; |
| 27 typedef _Tp value_type; |
| 28 |
| 29 template<typename _Tp1> |
| 30 struct rebind; |
| 31 |
| 32 allocator() throw(); |
| 33 |
| 34 allocator(const allocator&) throw(); |
| 35 template<typename _Tp1> |
| 36 allocator(const allocator<_Tp1>&) throw(); |
| 37 ~allocator() throw(); |
| 38 |
| 39 |
| 40 pointer |
| 41 address(reference __x) const; |
| 42 |
| 43 |
| 44 const_pointer |
| 45 address(const_reference __x) const; |
| 46 |
| 47 |
| 48 // NB: __n is permitted to be 0. The C++ standard says nothing |
| 49 // about what the return value is when __n == 0. |
| 50 _Tp* |
| 51 allocate(size_type __n, const void* = 0); |
| 52 |
| 53 // __p is not permitted to be a null pointer. |
| 54 void |
| 55 deallocate(pointer __p, size_type __n); |
| 56 |
| 57 size_type |
| 58 max_size() const throw(); |
| 59 |
| 60 void construct(pointer __p, const _Tp& __val); |
| 61 void destroy(pointer __p); |
| 62 }; |
| 63 |
| 64 template<> |
| 65 class allocator<void> |
| 66 { |
| 67 public: |
| 68 typedef size_t size_type; |
| 69 typedef ptrdiff_t difference_type; |
| 70 typedef void* pointer; |
| 71 typedef const void* const_pointer; |
| 72 typedef void value_type; |
| 73 |
| 74 template<typename _Tp1> |
| 75 struct rebind; |
| 76 }; |
| 77 } // namespace std |
OLD | NEW |