Ticket #1996: pool_alloc.txt

File pool_alloc.txt, 1.4 KB (added by Armin Felke, 14 years ago)

code (readable formatting)

Line 
1In section 20.4.1 [lib.default.allocator] of the C++ standard the following specialisation is defined for class std::allocator as follows:
2
3template <class T> class allocator;
4// specialize for void:
5template <> class allocator<void> {
6public:
7 typedef void* pointer;
8 typedef const void* const_pointer;
9 // reference-to-void members are impossible.
10 typedef void value_type;
11 template <class U> struct rebind { typedef allocator<U> other; };
12};
13
14
15In order to use the pool allocators with multi_index_container and ease generic programming,
16I would suggest the following additions to pool_alloc.hpp:
17
18
19 template<
20 typename UserAllocator,
21 typename Mutex,
22 unsigned NextSize>
23 class pool_allocator<void, UserAllocator, Mutex, NextSize> {
24 public:
25 typedef void* pointer;
26 typedef const void* const_pointer;
27 typedef void value_type;
28 template <class U> struct rebind {
29 typedef pool_allocator<U, UserAllocator, Mutex, NextSize> other;
30 };
31 };
32
33 template<
34 typename UserAllocator,
35 typename Mutex,
36 unsigned NextSize>
37 class fast_pool_allocator<void, UserAllocator, Mutex, NextSize> {
38 public:
39 typedef void* pointer;
40 typedef const void* const_pointer;
41 typedef void value_type;
42 template <class U> struct rebind {
43 typedef fast_pool_allocator<U, UserAllocator, Mutex, NextSize> other;
44 };
45 };