146 items
NAME ↑ SIZE MODIFIED PERMS ACTIONS
.. / Parent Directory
algorithmfwd.h — 23.97 KB
2025-09-15 15:41 · rw-r--r--
23.97 KB 2025-09-15 15:41 rw-r--r--
align.h — 3.62 KB
2025-09-15 15:41 · rw-r--r--
3.62 KB 2025-09-15 15:41 rw-r--r--
alloc_traits.h — 26.98 KB
2025-09-15 15:41 · rw-r--r--
26.98 KB 2025-09-15 15:41 rw-r--r--
allocated_ptr.h — 3.25 KB
2025-09-15 15:41 · rw-r--r--
3.25 KB 2025-09-15 15:41 rw-r--r--
allocator.h — 9.51 KB
2025-09-15 15:41 · rw-r--r--
9.51 KB 2025-09-15 15:41 rw-r--r--
atomic_base.h — 56.07 KB
2025-09-15 15:41 · rw-r--r--
56.07 KB 2025-09-15 15:41 rw-r--r--
atomic_futex.h — 12.1 KB
2025-09-15 15:41 · rw-r--r--
12.1 KB 2025-09-15 15:41 rw-r--r--
atomic_lockfree_defines.h — 2.3 KB
2025-09-15 15:41 · rw-r--r--
2.3 KB 2025-09-15 15:41 rw-r--r--
atomic_timed_wait.h — 13.21 KB
2025-09-15 15:41 · rw-r--r--
13.21 KB 2025-09-15 15:41 rw-r--r--
atomic_wait.h — 12.26 KB
2025-09-15 15:41 · rw-r--r--
12.26 KB 2025-09-15 15:41 rw-r--r--
basic_ios.h — 15.7 KB
2025-09-15 15:41 · rw-r--r--
15.7 KB 2025-09-15 15:41 rw-r--r--
basic_ios.tcc — 5.94 KB
2025-09-15 15:41 · rw-r--r--
5.94 KB 2025-09-15 15:41 rw-r--r--
basic_string.h — 246.04 KB
2025-09-15 15:41 · rw-r--r--
246.04 KB 2025-09-15 15:41 rw-r--r--
basic_string.tcc — 52.92 KB
2025-09-15 15:41 · rw-r--r--
52.92 KB 2025-09-15 15:41 rw-r--r--
boost_concept_check.h — 26.54 KB
2025-09-15 15:41 · rw-r--r--
26.54 KB 2025-09-15 15:41 rw-r--r--
c++0x_warning.h — 1.44 KB
2025-09-15 15:41 · rw-r--r--
1.44 KB 2025-09-15 15:41 rw-r--r--
char_traits.h — 28.66 KB
2025-09-15 15:41 · rw-r--r--
28.66 KB 2025-09-15 15:41 rw-r--r--
charconv.h — 3.35 KB
2025-09-15 15:41 · rw-r--r--
3.35 KB 2025-09-15 15:41 rw-r--r--
codecvt.h — 24.9 KB
2025-09-15 15:41 · rw-r--r--
24.9 KB 2025-09-15 15:41 rw-r--r--
concept_check.h — 3.34 KB
2025-09-15 15:41 · rw-r--r--
3.34 KB 2025-09-15 15:41 rw-r--r--
cpp_type_traits.h — 13.67 KB
2025-09-15 15:41 · rw-r--r--
13.67 KB 2025-09-15 15:41 rw-r--r--
cxxabi_forced.h — 1.77 KB
2025-09-15 15:41 · rw-r--r--
1.77 KB 2025-09-15 15:41 rw-r--r--
cxxabi_init_exception.h — 2.17 KB
2025-09-15 15:41 · rw-r--r--
2.17 KB 2025-09-15 15:41 rw-r--r--
deque.tcc — 41.37 KB
2025-09-15 15:41 · rw-r--r--
41.37 KB 2025-09-15 15:41 rw-r--r--
enable_special_members.h — 12.16 KB
2025-09-15 15:41 · rw-r--r--
12.16 KB 2025-09-15 15:41 rw-r--r--
erase_if.h — 2.02 KB
2025-09-15 15:41 · rw-r--r--
2.02 KB 2025-09-15 15:41 rw-r--r--
exception.h — 2.45 KB
2025-09-15 15:41 · rw-r--r--
2.45 KB 2025-09-15 15:41 rw-r--r--
exception_defines.h — 1.61 KB
2025-09-15 15:41 · rw-r--r--
1.61 KB 2025-09-15 15:41 rw-r--r--
exception_ptr.h — 7.46 KB
2025-09-15 15:41 · rw-r--r--
7.46 KB 2025-09-15 15:41 rw-r--r--
forward_list.h — 49.21 KB
2025-09-15 15:41 · rw-r--r--
49.21 KB 2025-09-15 15:41 rw-r--r--
forward_list.tcc — 13.71 KB
2025-09-15 15:41 · rw-r--r--
13.71 KB 2025-09-15 15:41 rw-r--r--
fs_dir.h — 16.23 KB
2025-09-15 15:41 · rw-r--r--
16.23 KB 2025-09-15 15:41 rw-r--r--
fs_fwd.h — 10.65 KB
2025-09-15 15:41 · rw-r--r--
10.65 KB 2025-09-15 15:41 rw-r--r--
fs_ops.h — 10.49 KB
2025-09-15 15:41 · rw-r--r--
10.49 KB 2025-09-15 15:41 rw-r--r--
fs_path.h — 39.49 KB
2025-09-15 15:41 · rw-r--r--
39.49 KB 2025-09-15 15:41 rw-r--r--
fstream.tcc — 32.88 KB
2025-09-15 15:41 · rw-r--r--
32.88 KB 2025-09-15 15:41 rw-r--r--
functexcept.h — 3.43 KB
2025-09-15 15:41 · rw-r--r--
3.43 KB 2025-09-15 15:41 rw-r--r--
functional_hash.h — 8.39 KB
2025-09-15 15:41 · rw-r--r--
8.39 KB 2025-09-15 15:41 rw-r--r--
gslice.h — 5.39 KB
2025-09-15 15:41 · rw-r--r--
5.39 KB 2025-09-15 15:41 rw-r--r--
gslice_array.h — 7.71 KB
2025-09-15 15:41 · rw-r--r--
7.71 KB 2025-09-15 15:41 rw-r--r--
hash_bytes.h — 2.1 KB
2025-09-15 15:41 · rw-r--r--
2.1 KB 2025-09-15 15:41 rw-r--r--
hashtable.h — 82.94 KB
2025-09-15 15:41 · rw-r--r--
82.94 KB 2025-09-15 15:41 rw-r--r--
hashtable_policy.h — 60.84 KB
2025-09-15 15:41 · rw-r--r--
60.84 KB 2025-09-15 15:41 rw-r--r--
indirect_array.h — 7.72 KB
2025-09-15 15:41 · rw-r--r--
7.72 KB 2025-09-15 15:41 rw-r--r--
invoke.h — 5.92 KB
2025-09-15 15:41 · rw-r--r--
5.92 KB 2025-09-15 15:41 rw-r--r--
ios_base.h — 31.19 KB
2025-09-15 15:41 · rw-r--r--
31.19 KB 2025-09-15 15:41 rw-r--r--
istream.tcc — 30.85 KB
2025-09-15 15:41 · rw-r--r--
30.85 KB 2025-09-15 15:41 rw-r--r--
iterator_concepts.h — 32.55 KB
2025-09-15 15:41 · rw-r--r--
32.55 KB 2025-09-15 15:41 rw-r--r--
list.tcc — 16.8 KB
2025-09-15 15:41 · rw-r--r--
16.8 KB 2025-09-15 15:41 rw-r--r--
locale_classes.h — 24.46 KB
2025-09-15 15:41 · rw-r--r--
24.46 KB 2025-09-15 15:41 rw-r--r--
locale_classes.tcc — 8.18 KB
2025-09-15 15:41 · rw-r--r--
8.18 KB 2025-09-15 15:41 rw-r--r--
locale_conv.h — 18.38 KB
2025-09-15 15:41 · rw-r--r--
18.38 KB 2025-09-15 15:41 rw-r--r--
locale_facets.h — 91.46 KB
2025-09-15 15:41 · rw-r--r--
91.46 KB 2025-09-15 15:41 rw-r--r--
locale_facets.tcc — 39.51 KB
2025-09-15 15:41 · rw-r--r--
39.51 KB 2025-09-15 15:41 rw-r--r--
locale_facets_nonio.h — 68.07 KB
2025-09-15 15:41 · rw-r--r--
68.07 KB 2025-09-15 15:41 rw-r--r--
locale_facets_nonio.tcc — 46.42 KB
2025-09-15 15:41 · rw-r--r--
46.42 KB 2025-09-15 15:41 rw-r--r--
localefwd.h — 5.8 KB
2025-09-15 15:41 · rw-r--r--
5.8 KB 2025-09-15 15:41 rw-r--r--
mask_array.h — 7.54 KB
2025-09-15 15:41 · rw-r--r--
7.54 KB 2025-09-15 15:41 rw-r--r--
max_size_type.h — 22.18 KB
2025-09-15 15:41 · rw-r--r--
22.18 KB 2025-09-15 15:41 rw-r--r--
memoryfwd.h — 2.45 KB
2025-09-15 15:41 · rw-r--r--
2.45 KB 2025-09-15 15:41 rw-r--r--
move.h — 6.64 KB
2025-09-15 15:41 · rw-r--r--
6.64 KB 2025-09-15 15:41 rw-r--r--
nested_exception.h — 4.77 KB
2025-09-15 15:41 · rw-r--r--
4.77 KB 2025-09-15 15:41 rw-r--r--
node_handle.h — 11.07 KB
2025-09-15 15:41 · rw-r--r--
11.07 KB 2025-09-15 15:41 rw-r--r--
ostream.tcc — 12.03 KB
2025-09-15 15:41 · rw-r--r--
12.03 KB 2025-09-15 15:41 rw-r--r--
ostream_insert.h — 3.94 KB
2025-09-15 15:41 · rw-r--r--
3.94 KB 2025-09-15 15:41 rw-r--r--
parse_numbers.h — 7.79 KB
2025-09-15 15:41 · rw-r--r--
7.79 KB 2025-09-15 15:41 rw-r--r--
postypes.h — 8.27 KB
2025-09-15 15:41 · rw-r--r--
8.27 KB 2025-09-15 15:41 rw-r--r--
predefined_ops.h — 9.94 KB
2025-09-15 15:41 · rw-r--r--
9.94 KB 2025-09-15 15:41 rw-r--r--
ptr_traits.h — 6.55 KB
2025-09-15 15:41 · rw-r--r--
6.55 KB 2025-09-15 15:41 rw-r--r--
quoted_string.h — 4.93 KB
2025-09-15 15:41 · rw-r--r--
4.93 KB 2025-09-15 15:41 rw-r--r--
random.h — 174.18 KB
2025-09-15 15:41 · rw-r--r--
174.18 KB 2025-09-15 15:41 rw-r--r--
random.tcc — 103.21 KB
2025-09-15 15:41 · rw-r--r--
103.21 KB 2025-09-15 15:41 rw-r--r--
range_access.h — 10.46 KB
2025-09-15 15:41 · rw-r--r--
10.46 KB 2025-09-15 15:41 rw-r--r--
ranges_algo.h — 114.09 KB
2025-09-15 15:41 · rw-r--r--
114.09 KB 2025-09-15 15:41 rw-r--r--
ranges_algobase.h — 18.43 KB
2025-09-15 15:41 · rw-r--r--
18.43 KB 2025-09-15 15:41 rw-r--r--
ranges_base.h — 23.82 KB
2025-09-15 15:41 · rw-r--r--
23.82 KB 2025-09-15 15:41 rw-r--r--
ranges_cmp.h — 5.88 KB
2025-09-15 15:41 · rw-r--r--
5.88 KB 2025-09-15 15:41 rw-r--r--
ranges_uninitialized.h — 17.71 KB
2025-09-15 15:41 · rw-r--r--
17.71 KB 2025-09-15 15:41 rw-r--r--
ranges_util.h — 20.11 KB
2025-09-15 15:41 · rw-r--r--
20.11 KB 2025-09-15 15:41 rw-r--r--
refwrap.h — 12.9 KB
2025-09-15 15:41 · rw-r--r--
12.9 KB 2025-09-15 15:41 rw-r--r--
regex.h — 101.53 KB
2025-09-15 15:41 · rw-r--r--
101.53 KB 2025-09-15 15:41 rw-r--r--
regex.tcc — 16.11 KB
2025-09-15 15:41 · rw-r--r--
16.11 KB 2025-09-15 15:41 rw-r--r--
regex_automaton.h — 10.54 KB
2025-09-15 15:41 · rw-r--r--
10.54 KB 2025-09-15 15:41 rw-r--r--
regex_automaton.tcc — 7.54 KB
2025-09-15 15:41 · rw-r--r--
7.54 KB 2025-09-15 15:41 rw-r--r--
regex_compiler.h — 15.84 KB
2025-09-15 15:41 · rw-r--r--
15.84 KB 2025-09-15 15:41 rw-r--r--
regex_compiler.tcc — 18.71 KB
2025-09-15 15:41 · rw-r--r--
18.71 KB 2025-09-15 15:41 rw-r--r--
regex_constants.h — 15.18 KB
2025-09-15 15:41 · rw-r--r--
15.18 KB 2025-09-15 15:41 rw-r--r--
regex_error.h — 4.9 KB
2025-09-15 15:41 · rw-r--r--
4.9 KB 2025-09-15 15:41 rw-r--r--
regex_executor.h — 8.64 KB
2025-09-15 15:41 · rw-r--r--
8.64 KB 2025-09-15 15:41 rw-r--r--
regex_executor.tcc — 18.4 KB
2025-09-15 15:41 · rw-r--r--
18.4 KB 2025-09-15 15:41 rw-r--r--
regex_scanner.h — 6.88 KB
2025-09-15 15:41 · rw-r--r--
6.88 KB 2025-09-15 15:41 rw-r--r--
regex_scanner.tcc — 14.89 KB
2025-09-15 15:41 · rw-r--r--
14.89 KB 2025-09-15 15:41 rw-r--r--
semaphore_base.h — 7.75 KB
2025-09-15 15:41 · rw-r--r--
7.75 KB 2025-09-15 15:41 rw-r--r--
shared_ptr.h — 30.25 KB
2025-09-15 15:41 · rw-r--r--
30.25 KB 2025-09-15 15:41 rw-r--r--
shared_ptr_atomic.h — 9.64 KB
2025-09-15 15:41 · rw-r--r--
9.64 KB 2025-09-15 15:41 rw-r--r--
shared_ptr_base.h — 53.62 KB
2025-09-15 15:41 · rw-r--r--
53.62 KB 2025-09-15 15:41 rw-r--r--
slice_array.h — 9.39 KB
2025-09-15 15:41 · rw-r--r--
9.39 KB 2025-09-15 15:41 rw-r--r--
specfun.h — 46.13 KB
2025-09-15 15:41 · rw-r--r--
46.13 KB 2025-09-15 15:41 rw-r--r--
sstream.tcc — 9.91 KB
2025-09-15 15:41 · rw-r--r--
9.91 KB 2025-09-15 15:41 rw-r--r--
std_abs.h — 3.28 KB
2025-09-15 15:41 · rw-r--r--
3.28 KB 2025-09-15 15:41 rw-r--r--
std_function.h — 22.33 KB
2025-09-15 15:41 · rw-r--r--
22.33 KB 2025-09-15 15:41 rw-r--r--
std_mutex.h — 6.29 KB
2025-09-15 15:41 · rw-r--r--
6.29 KB 2025-09-15 15:41 rw-r--r--
std_thread.h — 8.39 KB
2025-09-15 15:41 · rw-r--r--
8.39 KB 2025-09-15 15:41 rw-r--r--
stl_algo.h — 209.67 KB
2025-09-15 15:41 · rw-r--r--
209.67 KB 2025-09-15 15:41 rw-r--r--
stl_algobase.h — 74.6 KB
2025-09-15 15:41 · rw-r--r--
74.6 KB 2025-09-15 15:41 rw-r--r--
stl_bvector.h — 34.74 KB
2025-09-15 15:41 · rw-r--r--
34.74 KB 2025-09-15 15:41 rw-r--r--
stl_construct.h — 8.59 KB
2025-09-15 15:41 · rw-r--r--
8.59 KB 2025-09-15 15:41 rw-r--r--
stl_deque.h — 75.17 KB
2025-09-15 15:41 · rw-r--r--
75.17 KB 2025-09-15 15:41 rw-r--r--
stl_function.h — 42.87 KB
2025-09-15 15:41 · rw-r--r--
42.87 KB 2025-09-15 15:41 rw-r--r--
stl_heap.h — 20.27 KB
2025-09-15 15:41 · rw-r--r--
20.27 KB 2025-09-15 15:41 rw-r--r--
stl_iterator.h — 77 KB
2025-09-15 15:41 · rw-r--r--
77 KB 2025-09-15 15:41 rw-r--r--
stl_iterator_base_funcs.h — 7.99 KB
2025-09-15 15:41 · rw-r--r--
7.99 KB 2025-09-15 15:41 rw-r--r--
stl_iterator_base_types.h — 9.44 KB
2025-09-15 15:41 · rw-r--r--
9.44 KB 2025-09-15 15:41 rw-r--r--
stl_list.h — 68.14 KB
2025-09-15 15:41 · rw-r--r--
68.14 KB 2025-09-15 15:41 rw-r--r--
stl_map.h — 53.41 KB
2025-09-15 15:41 · rw-r--r--
53.41 KB 2025-09-15 15:41 rw-r--r--
stl_multimap.h — 42.51 KB
2025-09-15 15:41 · rw-r--r--
42.51 KB 2025-09-15 15:41 rw-r--r--
stl_multiset.h — 36.79 KB
2025-09-15 15:41 · rw-r--r--
36.79 KB 2025-09-15 15:41 rw-r--r--
stl_numeric.h — 14.26 KB
2025-09-15 15:41 · rw-r--r--
14.26 KB 2025-09-15 15:41 rw-r--r--
stl_pair.h — 19.66 KB
2025-09-15 15:41 · rw-r--r--
19.66 KB 2025-09-15 15:41 rw-r--r--
stl_queue.h — 24.45 KB
2025-09-15 15:41 · rw-r--r--
24.45 KB 2025-09-15 15:41 rw-r--r--
stl_raw_storage_iter.h — 3.74 KB
2025-09-15 15:41 · rw-r--r--
3.74 KB 2025-09-15 15:41 rw-r--r--
stl_relops.h — 4.49 KB
2025-09-15 15:41 · rw-r--r--
4.49 KB 2025-09-15 15:41 rw-r--r--
stl_set.h — 37.05 KB
2025-09-15 15:41 · rw-r--r--
37.05 KB 2025-09-15 15:41 rw-r--r--
stl_stack.h — 12.39 KB
2025-09-15 15:41 · rw-r--r--
12.39 KB 2025-09-15 15:41 rw-r--r--
stl_tempbuf.h — 8.45 KB
2025-09-15 15:41 · rw-r--r--
8.45 KB 2025-09-15 15:41 rw-r--r--
stl_tree.h — 72.16 KB
2025-09-15 15:41 · rw-r--r--
72.16 KB 2025-09-15 15:41 rw-r--r--
stl_uninitialized.h — 33.22 KB
2025-09-15 15:41 · rw-r--r--
33.22 KB 2025-09-15 15:41 rw-r--r--
stl_vector.h — 64.37 KB
2025-09-15 15:41 · rw-r--r--
64.37 KB 2025-09-15 15:41 rw-r--r--
stream_iterator.h — 7.52 KB
2025-09-15 15:41 · rw-r--r--
7.52 KB 2025-09-15 15:41 rw-r--r--
streambuf.tcc — 4.81 KB
2025-09-15 15:41 · rw-r--r--
4.81 KB 2025-09-15 15:41 rw-r--r--
streambuf_iterator.h — 15.17 KB
2025-09-15 15:41 · rw-r--r--
15.17 KB 2025-09-15 15:41 rw-r--r--
string_view.tcc — 7 KB
2025-09-15 15:41 · rw-r--r--
7 KB 2025-09-15 15:41 rw-r--r--
stringfwd.h — 2.63 KB
2025-09-15 15:41 · rw-r--r--
2.63 KB 2025-09-15 15:41 rw-r--r--
this_thread_sleep.h — 3.23 KB
2025-09-15 15:41 · rw-r--r--
3.23 KB 2025-09-15 15:41 rw-r--r--
uniform_int_dist.h — 12.75 KB
2025-09-15 15:41 · rw-r--r--
12.75 KB 2025-09-15 15:41 rw-r--r--
unique_lock.h — 6 KB
2025-09-15 15:41 · rw-r--r--
6 KB 2025-09-15 15:41 rw-r--r--
unique_ptr.h — 31.77 KB
2025-09-15 15:41 · rw-r--r--
31.77 KB 2025-09-15 15:41 rw-r--r--
unordered_map.h — 74.87 KB
2025-09-15 15:41 · rw-r--r--
74.87 KB 2025-09-15 15:41 rw-r--r--
unordered_set.h — 61.46 KB
2025-09-15 15:41 · rw-r--r--
61.46 KB 2025-09-15 15:41 rw-r--r--
uses_allocator.h — 6.74 KB
2025-09-15 15:41 · rw-r--r--
6.74 KB 2025-09-15 15:41 rw-r--r--
uses_allocator_args.h — 7.38 KB
2025-09-15 15:41 · rw-r--r--
7.38 KB 2025-09-15 15:41 rw-r--r--
valarray_after.h — 22.74 KB
2025-09-15 15:41 · rw-r--r--
22.74 KB 2025-09-15 15:41 rw-r--r--
valarray_array.h — 20.8 KB
2025-09-15 15:41 · rw-r--r--
20.8 KB 2025-09-15 15:41 rw-r--r--
valarray_array.tcc — 7.08 KB
2025-09-15 15:41 · rw-r--r--
7.08 KB 2025-09-15 15:41 rw-r--r--
valarray_before.h — 18.69 KB
2025-09-15 15:41 · rw-r--r--
18.69 KB 2025-09-15 15:41 rw-r--r--
vector.tcc — 30.26 KB
2025-09-15 15:41 · rw-r--r--
30.26 KB 2025-09-15 15:41 rw-r--r--
ONLINE
bits
146 items
03:14:33
TERMINAL FM
Edit
Preview
Download
Rename
Copy
Chmod
Delete
// Allocators -*- C++ -*- // Copyright (C) 2001-2021 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the // terms of the GNU General Public License as published by the // Free Software Foundation; either version 3, or (at your option) // any later version. // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // Under Section 7 of GPL version 3, you are granted additional // permissions described in the GCC Runtime Library Exception, version // 3.1, as published by the Free Software Foundation. // You should have received a copy of the GNU General Public License and // a copy of the GCC Runtime Library Exception along with this program; // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see // . /* * Copyright (c) 1996-1997 * Silicon Graphics Computer Systems, Inc. * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Silicon Graphics makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. */ /** @file bits/allocator.h * This is an internal header file, included by other library headers. * Do not attempt to use it directly. @headername{memory} */ #ifndef _ALLOCATOR_H #define _ALLOCATOR_H 1 #include // Define the base class to std::allocator. #include #if __cplusplus >= 201103L #include #endif #define __cpp_lib_incomplete_container_elements 201505 namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION /** * @addtogroup allocators * @{ */ // Since C++20 the primary template should be used for allocator, // but then it would have a non-trivial default ctor and dtor for C++20, // but trivial for C++98-17, which would be an ABI incompatibiliy between // different standard dialects. So C++20 still uses the allocator // explicit specialization, with the historical ABI properties, but with // the same members that are present in the primary template. /// allocator specialization. template<> class allocator { public: typedef void value_type; typedef size_t size_type; typedef ptrdiff_t difference_type; #if __cplusplus <= 201703L // These were removed for C++20, allocator_traits does the right thing. typedef void* pointer; typedef const void* const_pointer; template struct rebind { typedef allocator<_Tp1> other; }; #endif #if __cplusplus >= 201103L // _GLIBCXX_RESOLVE_LIB_DEFECTS // 2103. std::allocator propagate_on_container_move_assignment using propagate_on_container_move_assignment = true_type; using is_always_equal _GLIBCXX20_DEPRECATED_SUGGEST("std::allocator_traits::is_always_equal") = true_type; #if __cplusplus >= 202002L // As noted above, these members are present for C++20 to provide the // same API as the primary template, but still trivial as in pre-C++20. allocator() = default; ~allocator() = default; template constexpr allocator(const allocator<_Up>&) noexcept { } // No allocate member because it's ill-formed by LWG 3307. // No deallocate member because it would be undefined to call it // with any pointer which wasn't obtained from allocate. #endif // C++20 #endif // C++11 }; /** * @brief The @a standard allocator, as per C++03 [20.4.1]. * * See https://gcc.gnu.org/onlinedocs/libstdc++/manual/memory.html#std.util.memory.allocator * for further details. * * @tparam _Tp Type of allocated object. */ template class allocator : public __allocator_base<_Tp> { public: typedef _Tp value_type; typedef size_t size_type; typedef ptrdiff_t difference_type; #if __cplusplus <= 201703L // These were removed for C++20. typedef _Tp* pointer; typedef const _Tp* const_pointer; typedef _Tp& reference; typedef const _Tp& const_reference; template struct rebind { typedef allocator<_Tp1> other; }; #endif #if __cplusplus >= 201103L // _GLIBCXX_RESOLVE_LIB_DEFECTS // 2103. std::allocator propagate_on_container_move_assignment using propagate_on_container_move_assignment = true_type; using is_always_equal _GLIBCXX20_DEPRECATED_SUGGEST("std::allocator_traits::is_always_equal") = true_type; #endif // _GLIBCXX_RESOLVE_LIB_DEFECTS // 3035. std::allocator's constructors should be constexpr _GLIBCXX20_CONSTEXPR allocator() _GLIBCXX_NOTHROW { } _GLIBCXX20_CONSTEXPR allocator(const allocator& __a) _GLIBCXX_NOTHROW : __allocator_base<_Tp>(__a) { } #if __cplusplus >= 201103L // Avoid implicit deprecation. allocator& operator=(const allocator&) = default; #endif template _GLIBCXX20_CONSTEXPR allocator(const allocator<_Tp1>&) _GLIBCXX_NOTHROW { } #if __cpp_constexpr_dynamic_alloc constexpr #endif ~allocator() _GLIBCXX_NOTHROW { } #if __cplusplus > 201703L [[nodiscard,__gnu__::__always_inline__]] constexpr _Tp* allocate(size_t __n) { #ifdef __cpp_lib_is_constant_evaluated if (std::is_constant_evaluated()) return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); #endif return __allocator_base<_Tp>::allocate(__n, 0); } [[__gnu__::__always_inline__]] constexpr void deallocate(_Tp* __p, size_t __n) { #ifdef __cpp_lib_is_constant_evaluated if (std::is_constant_evaluated()) { ::operator delete(__p); return; } #endif __allocator_base<_Tp>::deallocate(__p, __n); } #endif // C++20 friend _GLIBCXX20_CONSTEXPR bool operator==(const allocator&, const allocator&) _GLIBCXX_NOTHROW { return true; } #if __cpp_impl_three_way_comparison < 201907L friend _GLIBCXX20_CONSTEXPR bool operator!=(const allocator&, const allocator&) _GLIBCXX_NOTHROW { return false; } #endif // Inherit everything else. }; template inline _GLIBCXX20_CONSTEXPR bool operator==(const allocator<_T1>&, const allocator<_T2>&) _GLIBCXX_NOTHROW { return true; } #if __cpp_impl_three_way_comparison < 201907L template inline _GLIBCXX20_CONSTEXPR bool operator!=(const allocator<_T1>&, const allocator<_T2>&) _GLIBCXX_NOTHROW { return false; } #endif // Invalid allocator partial specializations. // allocator_traits::rebind_alloc can be used to form a valid allocator type. template class allocator { public: typedef _Tp value_type; template allocator(const allocator<_Up>&) { } }; template class allocator { public: typedef _Tp value_type; template allocator(const allocator<_Up>&) { } }; template class allocator { public: typedef _Tp value_type; template allocator(const allocator<_Up>&) { } }; /// @} group allocator // Inhibit implicit instantiations for required instantiations, // which are defined via explicit instantiations elsewhere. #if _GLIBCXX_EXTERN_TEMPLATE extern template class allocator; extern template class allocator; #endif // Undefine. #undef __allocator_base // To implement Option 3 of DR 431. template struct __alloc_swap { static void _S_do_it(_Alloc&, _Alloc&) _GLIBCXX_NOEXCEPT { } }; template struct __alloc_swap<_Alloc, false> { static void _S_do_it(_Alloc& __one, _Alloc& __two) _GLIBCXX_NOEXCEPT { // Precondition: swappable allocators. if (__one != __two) swap(__one, __two); } }; // Optimize for stateless allocators. template struct __alloc_neq { static bool _S_do_it(const _Alloc&, const _Alloc&) { return false; } }; template struct __alloc_neq<_Alloc, false> { static bool _S_do_it(const _Alloc& __one, const _Alloc& __two) { return __one != __two; } }; #if __cplusplus >= 201103L template, is_nothrow_move_constructible>::value> struct __shrink_to_fit_aux { static bool _S_do_it(_Tp&) noexcept { return false; } }; template struct __shrink_to_fit_aux<_Tp, true> { static bool _S_do_it(_Tp& __c) noexcept { #if __cpp_exceptions try { _Tp(__make_move_if_noexcept_iterator(__c.begin()), __make_move_if_noexcept_iterator(__c.end()), __c.get_allocator()).swap(__c); return true; } catch(...) { return false; } #else return false; #endif } }; #endif _GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif