File tree Expand file tree Collapse file tree 2 files changed +15
-18
lines changed Expand file tree Collapse file tree 2 files changed +15
-18
lines changed Original file line number Diff line number Diff line change 9
9
#include < support/lockedpool.h>
10
10
#include < support/cleanse.h>
11
11
12
+ #include < memory>
12
13
#include < string>
13
14
14
15
//
17
18
//
18
19
template <typename T>
19
20
struct secure_allocator : public std ::allocator<T> {
20
- // MSVC8 default copy constructor is broken
21
- typedef std::allocator<T> base;
22
- typedef typename base::size_type size_type;
23
- typedef typename base::difference_type difference_type;
24
- typedef typename base::pointer pointer;
25
- typedef typename base::const_pointer const_pointer;
26
- typedef typename base::reference reference;
27
- typedef typename base::const_reference const_reference;
28
- typedef typename base::value_type value_type;
21
+ using base = std::allocator<T>;
22
+ using traits = std::allocator_traits<base>;
23
+ using size_type = typename traits::size_type;
24
+ using difference_type = typename traits::difference_type;
25
+ using pointer = typename traits::pointer;
26
+ using const_pointer = typename traits::const_pointer;
27
+ using value_type = typename traits::value_type;
29
28
secure_allocator () noexcept {}
30
29
secure_allocator (const secure_allocator& a) noexcept : base(a) {}
31
30
template <typename U>
Original file line number Diff line number Diff line change 13
13
14
14
template <typename T>
15
15
struct zero_after_free_allocator : public std ::allocator<T> {
16
- // MSVC8 default copy constructor is broken
17
- typedef std::allocator<T> base;
18
- typedef typename base::size_type size_type;
19
- typedef typename base::difference_type difference_type;
20
- typedef typename base::pointer pointer;
21
- typedef typename base::const_pointer const_pointer;
22
- typedef typename base::reference reference;
23
- typedef typename base::const_reference const_reference;
24
- typedef typename base::value_type value_type;
16
+ using base = std::allocator<T>;
17
+ using traits = std::allocator_traits<base>;
18
+ using size_type = typename traits::size_type;
19
+ using difference_type = typename traits::difference_type;
20
+ using pointer = typename traits::pointer;
21
+ using const_pointer = typename traits::const_pointer;
22
+ using value_type = typename traits::value_type;
25
23
zero_after_free_allocator () noexcept {}
26
24
zero_after_free_allocator (const zero_after_free_allocator& a) noexcept : base(a) {}
27
25
template <typename U>
You can’t perform that action at this time.
0 commit comments