gcc/libstdc++-v3/include/bits
Jonathan Wakely b1e7c6fce1 libstdc++: Reduce header dependencies in and on <memory>
By moving std::make_obj_using_allocator and the related "utility
functions for uses-allocator construction" to a new header, we can avoid
including the whole of <memory> in <scoped_allocator> and
<memory_resource>.

In order to simplify the implementation of those utility functions they
now use concepts unconditionally. They are no longer defined if
__cpp_concepts is not defined. To simplify the code that uses those
functions I've introduced a __cpp_lib_make_obj_using_allocator feature
test macro (not specified in the standard, which might be an oversight).
That allows the code in <memory_resource> and <scoped_allocator> to
check the feature test macro to decide whether to use the new utilities,
or fall back to the C++17 code.

At the same time, this reshuffles some of the headers included by
<memory> so that they are (mostly?) self-contained. It should no longer
be necessary to include other headers before <bits/shared_ptr.h> when
other parts of the library want to use std::shared_ptr without including
the whole of <memory>.

libstdc++-v3/ChangeLog:

	* include/Makefile.am: Add new header.
	* include/Makefile.in: Regenerate.
	* include/bits/shared_ptr.h: Include <iosfwd>.
	* include/bits/shared_ptr_base.h: Include required headers here
	directly, instead of in <memory>.
	* include/bits/uses_allocator_args.h: New file. Move utility
	functions for uses-allocator construction from <memory> to here.
	Only define the utility functions when concepts are available.
	(__cpp_lib_make_obj_using_allocator): Define non-standard
	feature test macro.
	* include/std/condition_variable: Remove unused headers.
	* include/std/future: Likewise.
	* include/std/memory: Remove headers that are not needed
	directly, and are now inclkuded where they're needed. Include
	new <bits/uses_allocator_args.h> header.
	* include/std/memory_resource: Include only the necessary
	headers. Use new feature test macro to detect support for the
	utility functions.
	* include/std/scoped_allocator: Likewise.
	* include/std/version (__cpp_lib_make_obj_using_allocator):
	Define.
2020-10-22 18:42:03 +01:00
..
algorithmfwd.h
align.h libstdc++: Fix overflow handling in std::align 2020-09-22 17:49:48 +01:00
alloc_traits.h libstdc++: Avoid errors in allocator's noexcept-specifier (PR 89510) 2020-04-30 16:01:43 +01:00
allocated_ptr.h
allocator.h libstdc++: Avoid errors in allocator's noexcept-specifier (PR 89510) 2020-04-30 16:01:43 +01:00
atomic_base.h libstdc++: Add unused attributes to suppress warnings 2020-09-10 17:09:15 +01:00
atomic_futex.h libstdc++: Use correct duration for atomic_futex wait on custom clock [PR 91486] 2020-10-05 11:32:10 +01:00
basic_ios.h
basic_ios.tcc
basic_string.h libstdc++: Define some std::string constructors inline 2020-10-14 12:52:47 +01:00
basic_string.tcc libstdc++: Define some std::string constructors inline 2020-10-14 12:52:47 +01:00
boost_concept_check.h libstdc++: Make _GLIBCXX_CONCEPT_CHECKS more constexpr-friendly 2020-02-27 10:52:28 +00:00
c++0x_warning.h
c++config libstdc++: Use __is_same instead of __is_same_as 2020-09-30 18:41:12 +01:00
char_traits.h libstdc++: Update value of __cpp_lib_constexpr_char_traits for C++20 2020-06-15 14:31:26 +01:00
charconv.h
codecvt.h libstdc++: Fix some -Wunused-parameter warnings 2020-09-10 17:09:16 +01:00
concept_check.h
cpp_type_traits.h libstdc++: Fix three-way comparison for std::array [PR 96851] 2020-09-02 15:32:11 +01:00
deque.tcc libstdc++: Fix three-way comparison for std::array [PR 96851] 2020-09-02 15:32:11 +01:00
enable_special_members.h
erase_if.h
forward_list.h libstdc++: Add comparison operators to sequence containers 2020-04-17 23:41:04 +01:00
forward_list.tcc libstdc++: Implement DR 526 on [forward_]list remove_if/unique [PR 91620] 2020-08-11 21:30:05 +02:00
fs_dir.h libstdc++: Fix -Wmismatched-tags warnings (PR 96063) 2020-07-06 17:12:29 +01:00
fs_fwd.h libstdc++: Add comparison operators to std::filesystem types 2020-04-15 21:01:42 +01:00
fs_ops.h
fs_path.h libstdc++: Fix -Wnarrowing warnings 2020-09-10 18:47:08 +01:00
fstream.tcc
functexcept.h libstdc++: Make allocators throw bad_array_new_length on overflow [LWG 3190] 2020-10-05 15:18:56 +01:00
functional_hash.h
gslice_array.h
gslice.h
hashtable_policy.h libstdc++: Refactor _Hashtable to prepare for custom pointers 2020-10-20 21:30:22 +02:00
hashtable.h libstdc++: Refactor _Hashtable to prepare for custom pointers 2020-10-20 21:30:22 +02:00
indirect_array.h
invoke.h
ios_base.h libstdc++: Add C++11 member functions for ios::failure in old ABI 2020-10-08 14:45:37 +01:00
istream.tcc libstdc++: Do not set eofbit eagerly in operator>>(istream&, char(&)[N]) 2020-08-06 19:23:14 +01:00
iterator_concepts.h libstdc++: Introduce new headers for C++20 ranges components 2020-09-22 15:45:54 +01:00
list.tcc libstdc++: Implement DR 526 on [forward_]list remove_if/unique [PR 91620] 2020-08-11 21:30:05 +02:00
locale_classes.h libstdc++: Add comparison operators to types from Utilities clause 2020-04-15 19:47:48 +01:00
locale_classes.tcc
locale_conv.h libstdc++: Fix -Wsign-compare warnings 2020-09-10 18:57:39 +01:00
locale_facets_nonio.h
locale_facets_nonio.tcc libstdc++: Clean up inconsistent whitespace 2020-09-10 17:09:16 +01:00
locale_facets.h
locale_facets.tcc
localefwd.h libstdc++: Fix -Wmismatched-tags warnings (PR 96063) 2020-07-06 17:12:29 +01:00
mask_array.h
max_size_type.h libstdc++: integer-class types as per [iterator.concept.winc] 2020-08-19 09:12:55 -04:00
memoryfwd.h
move.h
node_handle.h libstdc++: Optimize container node-handle type for size 2020-10-19 18:06:51 +01:00
ostream_insert.h
ostream.tcc
parse_numbers.h libstdc++: Replace __int_limits with __numeric_traits_integer 2020-07-07 23:36:29 +01:00
postypes.h
predefined_ops.h
ptr_traits.h libstdc++: Add missing feature test macros 2020-04-22 22:54:34 +01:00
quoted_string.h
random.h libstdc++: Avoid divide by zero in default template arguments 2020-10-08 14:45:36 +01:00
random.tcc libstdc++: Fix incorrect results in std::seed_seq::generate [PR 97311] 2020-10-09 16:58:32 +01:00
range_access.h libstdc++: Introduce new headers for C++20 ranges components 2020-09-22 15:45:54 +01:00
ranges_algo.h libstdc++: Fix non-reserved names in headers 2020-10-08 00:05:53 +01:00
ranges_algobase.h libstdc++: Introduce new headers for C++20 ranges components 2020-09-22 15:45:54 +01:00
ranges_base.h libstdc++: Introduce new headers for C++20 ranges components 2020-09-22 15:45:54 +01:00
ranges_cmp.h libstdc++: Introduce new headers for C++20 ranges components 2020-09-22 15:45:54 +01:00
ranges_uninitialized.h libstdc++: Make ranges::construct_at constexpr-friendly [PR95788] 2020-10-08 18:10:05 -04:00
ranges_util.h libstdc++: Make structured bindings always work for subranges [PR 97512] 2020-10-21 14:40:54 +01:00
refwrap.h
regex_automaton.h
regex_automaton.tcc
regex_compiler.h
regex_compiler.tcc
regex_constants.h
regex_error.h libstdc++: Fix build error in <bits/regex_error.h> 2020-09-11 14:52:40 +01:00
regex_executor.h
regex_executor.tcc
regex_scanner.h
regex_scanner.tcc
regex.h libstdc++: Reduce uses of std::numeric_limits 2020-10-06 00:05:11 +01:00
regex.tcc
shared_ptr_atomic.h
shared_ptr_base.h libstdc++: Reduce header dependencies in and on <memory> 2020-10-22 18:42:03 +01:00
shared_ptr.h libstdc++: Reduce header dependencies in and on <memory> 2020-10-22 18:42:03 +01:00
slice_array.h libstdc++: Add comparison operators to types from Numerics clause 2020-04-08 16:51:59 +01:00
specfun.h
sstream.tcc
std_abs.h
std_function.h libstdc++: Define all std::function members inline 2020-06-19 14:37:52 +01:00
std_mutex.h
stl_algo.h libstdc++: Fix doxygen comment for std::any_of 2020-10-13 20:21:55 +01:00
stl_algobase.h libstdc++: Fix documentation for return values of copy algos 2020-10-12 18:14:01 +01:00
stl_bvector.h libstdc++: Fix and improve std::vector<bool> implementation. 2020-07-31 23:18:51 +02:00
stl_construct.h libstdc++: Fix regression in std::_Construct (PR 94831) 2020-04-28 23:39:38 +01:00
stl_deque.h libstdc++: Make self-move well-defined for containers [PR 85828] 2020-08-12 20:36:00 +01:00
stl_function.h
stl_heap.h
stl_iterator_base_funcs.h
stl_iterator_base_types.h libstdc++: Define __cpp_lib_ranges macro for C++20 2020-03-27 23:26:03 +00:00
stl_iterator.h libstdc++: Add missing P0896 changes to <iterator> 2020-10-02 10:51:31 -04:00
stl_list.h libstdc++: Make self-move well-defined for containers [PR 85828] 2020-08-12 20:36:00 +01:00
stl_map.h libstdc++: Fix -Wmismatched-tags warnings (PR 96063) 2020-07-06 17:12:29 +01:00
stl_multimap.h libstdc++: Fix -Wmismatched-tags warnings (PR 96063) 2020-07-06 17:12:29 +01:00
stl_multiset.h libstdc++: Fix -Wmismatched-tags warnings (PR 96063) 2020-07-06 17:12:29 +01:00
stl_numeric.h
stl_pair.h libstdc++: Remove redundant std:: qualification 2020-06-19 15:02:54 +01:00
stl_queue.h libstdc++: Define operator<=> for std::stack and std::queue 2020-04-19 21:30:15 +01:00
stl_raw_storage_iter.h
stl_relops.h
stl_set.h libstdc++: Fix -Wmismatched-tags warnings (PR 96063) 2020-07-06 17:12:29 +01:00
stl_stack.h libstdc++: Define operator<=> for std::stack and std::queue 2020-04-19 21:30:15 +01:00
stl_tempbuf.h
stl_tree.h libstdc++: Remove deprecated comparison operators for RB trees 2020-08-19 17:04:49 +01:00
stl_uninitialized.h libstdc++: Fix some -Wsystem-headers warnings (PR 95765) 2020-06-19 18:20:05 +01:00
stl_vector.h libstdc++: Add comparison operators to sequence containers 2020-04-17 23:41:04 +01:00
stream_iterator.h libstdc++: Fix compilation with released versions of Clang 2020-03-18 12:55:29 +00:00
streambuf_iterator.h libstdc++: Specialize copy/copy_n for istreambuf_iterator and deque iterators 2020-06-04 22:27:47 +02:00
streambuf.tcc
string_view.tcc
stringfwd.h
uniform_int_dist.h libstdc++: Optimize uniform_int_distribution using Lemire's algorithm 2020-10-09 14:09:36 +01:00
unique_lock.h
unique_ptr.h libstdc++: Implement std::make_unique_for_overwrite 2020-10-19 22:11:39 +01:00
unordered_map.h libstdc++: Fix unordered containers move constructors noexcept qualification 2020-07-29 11:26:42 +02:00
unordered_set.h libstdc++: Fix unordered containers move constructors noexcept qualification 2020-07-29 11:26:42 +02:00
uses_allocator_args.h libstdc++: Reduce header dependencies in and on <memory> 2020-10-22 18:42:03 +01:00
uses_allocator.h
valarray_after.h
valarray_array.h
valarray_array.tcc
valarray_before.h
vector.tcc