| namespace std | |
| { | |
| /** | |
| * @brief The "standard" allocator, as per [20.4]. | |
| * | |
| * The private _Alloc is "SGI" style. (See comments at the top | |
| * of stl_alloc.h.) | |
| * | |
| * The underlying allocator behaves as follows. | |
| * - __default_alloc_template is used via two typedefs | |
| * - "__single_client_alloc" typedef does no locking for threads | |
| * - "__alloc" typedef is threadsafe via the locks | |
| * - __new_alloc is used for memory requests | |
| * | |
| * (See @link Allocators allocators info @endlink for more.) | |
| */ | |
| template<typename _Tp> | |
| class allocator | |
| { | |
| public: | |
| typedef size_t size_type; | |
| typedef ptrdiff_t difference_type; | |
| typedef _Tp* pointer; | |
| typedef const _Tp* const_pointer; | |
| typedef _Tp& reference; | |
| typedef const _Tp& const_reference; | |
| typedef _Tp value_type; | |
| template<typename _Tp1> | |
| struct rebind; | |
| allocator() throw(); | |
| allocator(const allocator& other) throw(); | |
| template<typename _Tp1> | |
| allocator(const allocator<_Tp1>& other) throw(); | |
| ~allocator() throw(); | |
| pointer | |
| address(reference __x) const; | |
| const_pointer | |
| address(const_reference __x) const; | |
| // NB: __n is permitted to be 0. The C++ standard says nothing | |
| // about what the return value is when __n == 0. | |
| _Tp* | |
| allocate(size_type __n, const void* = 0); | |
| // __p is not permitted to be a null pointer. | |
| void | |
| deallocate(pointer __p, size_type __n); | |
| size_type | |
| max_size() const throw(); | |
| void construct(pointer __p, const _Tp& __val); | |
| void destroy(pointer __p); | |
| }; | |
| template<> | |
| class allocator<void> | |
| { | |
| public: | |
| typedef size_t size_type; | |
| typedef ptrdiff_t difference_type; | |
| typedef void* pointer; | |
| typedef const void* const_pointer; | |
| typedef void value_type; | |
| template<typename _Tp1> | |
| struct rebind; | |
| }; | |
| } // namespace std |