8sa1-gcc/libstdc++-v3/include/bits
Jonathan Wakely f094665d46 libstdc++: Avoid constraint recursion with iterator_traits (PR 93983)
Checking whether a filesystem::path constructor argument is an iterator
requires instantiating std::iterator_traits. In C++20 that checks for
satisfaction of std::iterator_traits constraints, which checks if the
type is copyable, which can end up recursing back to the path
constructor. The fix in LWG 3420 is to reorder the cpp17-iterator
concept's constraints to check if the type looks vaguely like an
iterator before checking copyable. That avoids the recursion for types
which definitely aren't iterators, but isn't foolproof.

	PR libstdc++/93983
	* include/bits/iterator_concepts.h (__detail::__cpp17_iterator):
	Reorder constraints to avoid recursion when constructors use
	iterator_traits (LWG 3420).
	* testsuite/24_iterators/customization_points/lwg3420.cc: New test.
2020-05-21 07:32:15 +01:00
..
algorithmfwd.h Update copyright years. 2020-01-01 12:51:42 +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 Update copyright years. 2020-01-01 12:51:42 +01:00
allocator.h libstdc++: Avoid errors in allocator's noexcept-specifier (PR 89510) 2020-04-30 16:01:43 +01:00
atomic_base.h Implent C++20 std::atomic_flag::test 2020-05-12 07:37:09 +02:00
atomic_futex.h Update copyright years. 2020-01-01 12:51:42 +01:00
basic_ios.h Update copyright years. 2020-01-01 12:51:42 +01:00
basic_ios.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
basic_string.h libstdc++: Add comparison operators for string and regex types 2020-04-17 16:40:11 +01:00
basic_string.tcc libstdc++: Fix outdated comment about std::string instantiations (PR 94854) 2020-04-29 19:00:58 +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 Update copyright years. 2020-01-01 12:51:42 +01:00
c++config libstdc++: Fix freestanding build PR 92376) 2020-01-17 17:03:46 +00:00
char_traits.h libstdc++: Add comparison operators for string and regex types 2020-04-17 16:40:11 +01:00
charconv.h Update copyright years. 2020-01-01 12:51:42 +01:00
codecvt.h Update copyright years. 2020-01-01 12:51:42 +01:00
concept_check.h Update copyright years. 2020-01-01 12:51:42 +01:00
cpp_type_traits.h libstdc++: Fix comment on __memcpyable 2020-03-04 15:35:20 +00:00
deque.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
enable_special_members.h Update copyright years. 2020-01-01 12:51:42 +01:00
erase_if.h libstdc++: Update __cpp_lib_erase_if macro (P1115R3) 2020-02-15 10:25:23 +00:00
forward_list.h libstdc++: Add comparison operators to sequence containers 2020-04-17 23:41:04 +01:00
forward_list.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
fs_dir.h libstdc++: Add comparison operators to std::filesystem types 2020-04-15 21:01:42 +01:00
fs_fwd.h libstdc++: Add comparison operators to std::filesystem types 2020-04-15 21:01:42 +01:00
fs_ops.h Update copyright years. 2020-01-01 12:51:42 +01:00
fs_path.h libstdc++: Add comparison operators to std::filesystem types 2020-04-15 21:01:42 +01:00
fstream.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
functexcept.h Update copyright years. 2020-01-01 12:51:42 +01:00
functional_hash.h Update copyright years. 2020-01-01 12:51:42 +01:00
gslice_array.h Update copyright years. 2020-01-01 12:51:42 +01:00
gslice.h Update copyright years. 2020-01-01 12:51:42 +01:00
hashtable_policy.h libstdc++ Hastable: Move std::is_permutation to limit includes 2020-02-29 18:40:39 +01:00
hashtable.h libstdc++: Add missing std:: qualification of a forward call 2020-02-12 22:09:41 +01:00
indirect_array.h Update copyright years. 2020-01-01 12:51:42 +01:00
int_limits.h libstdc++: Add lightweight replacement for std::numeric_limits (PR 92546) 2020-02-17 15:11:04 +00:00
invoke.h Update copyright years. 2020-01-01 12:51:42 +01:00
ios_base.h Update copyright years. 2020-01-01 12:51:42 +01:00
istream.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
iterator_concepts.h libstdc++: Avoid constraint recursion with iterator_traits (PR 93983) 2020-05-21 07:32:15 +01:00
list.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
locale_classes.h libstdc++: Add comparison operators to types from Utilities clause 2020-04-15 19:47:48 +01:00
locale_classes.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
locale_conv.h Update copyright years. 2020-01-01 12:51:42 +01:00
locale_facets_nonio.h Update copyright years. 2020-01-01 12:51:42 +01:00
locale_facets_nonio.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
locale_facets.h Update copyright years. 2020-01-01 12:51:42 +01:00
locale_facets.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
localefwd.h Update copyright years. 2020-01-01 12:51:42 +01:00
mask_array.h Update copyright years. 2020-01-01 12:51:42 +01:00
memoryfwd.h Update copyright years. 2020-01-01 12:51:42 +01:00
move.h Update copyright years. 2020-01-01 12:51:42 +01:00
node_handle.h Update copyright years. 2020-01-01 12:51:42 +01:00
ostream_insert.h Update copyright years. 2020-01-01 12:51:42 +01:00
ostream.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
parse_numbers.h libstdc++: Add lightweight replacement for std::numeric_limits (PR 92546) 2020-02-17 15:11:04 +00:00
postypes.h Update copyright years. 2020-01-01 12:51:42 +01:00
predefined_ops.h Update copyright years. 2020-01-01 12:51:42 +01:00
ptr_traits.h libstdc++: Add missing feature test macros 2020-04-22 22:54:34 +01:00
quoted_string.h Update copyright years. 2020-01-01 12:51:42 +01:00
random.h libstdc++: Reduce header dependencies for C++20 (PR 92546) 2020-02-17 15:43:43 +00:00
random.tcc libstdc++: Fix undefined behaviour in random dist serialization (PR93205) 2020-01-09 16:50:51 +00:00
range_access.h libstdc++: Add missing feature test macros 2020-04-22 22:54:34 +01:00
range_cmp.h libstdc++: Define __cpp_lib_ranges macro for C++20 2020-03-27 23:26:03 +00:00
ranges_algo.h libstdc++: Fix some C++20 algorithms to work in parallel mode 2020-05-07 21:43:49 +01:00
ranges_algobase.h libstdc++: Fix incorrect use of memset in ranges::fill_n (PR 94017) 2020-03-03 22:46:39 -05:00
ranges_uninitialized.h libstdc++: Move-only input iterator support in <memory> algorithms (LWG 3355) 2020-03-03 22:44:39 -05:00
refwrap.h libstdc++: Avoid using sizeof with function types (PR 93470) 2020-01-28 13:24:09 +00:00
regex_automaton.h Update copyright years. 2020-01-01 12:51:42 +01:00
regex_automaton.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
regex_compiler.h Update copyright years. 2020-01-01 12:51:42 +01:00
regex_compiler.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
regex_constants.h Update copyright years. 2020-01-01 12:51:42 +01:00
regex_error.h Update copyright years. 2020-01-01 12:51:42 +01:00
regex_executor.h Update copyright years. 2020-01-01 12:51:42 +01:00
regex_executor.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
regex_scanner.h Update copyright years. 2020-01-01 12:51:42 +01:00
regex_scanner.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
regex.h libstdc++: Add comparison operators for string and regex types 2020-04-17 16:40:11 +01:00
regex.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
shared_ptr_atomic.h Update copyright years. 2020-01-01 12:51:42 +01:00
shared_ptr_base.h libstdc++: Add comparison operators to std::shared_ptr (PR 94562) 2020-04-14 21:54:55 +01:00
shared_ptr.h libstdc++: Add comparison operators to std::shared_ptr (PR 94562) 2020-04-14 21:54:55 +01:00
slice_array.h libstdc++: Add comparison operators to types from Numerics clause 2020-04-08 16:51:59 +01:00
specfun.h Update copyright years. 2020-01-01 12:51:42 +01:00
sstream.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
std_abs.h Update copyright years. 2020-01-01 12:51:42 +01:00
std_function.h libstdc++: Add comparison operators to types from Utilities clause 2020-04-15 19:47:48 +01:00
std_mutex.h Update copyright years. 2020-01-01 12:51:42 +01:00
stl_algo.h libstdc++ Hastable: Move std::is_permutation to limit includes 2020-02-29 18:40:39 +01:00
stl_algobase.h libstdc++: Fix some C++20 algorithms to work in parallel mode 2020-05-07 21:43:49 +01:00
stl_bvector.h libstdc++ std::fill overload for std::vector<bool>::iterator 2020-05-06 23:28:22 +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++: Add comparison operators to sequence containers 2020-04-17 23:41:04 +01:00
stl_function.h Update copyright years. 2020-01-01 12:51:42 +01:00
stl_heap.h Update copyright years. 2020-01-01 12:51:42 +01:00
stl_iterator_base_funcs.h Update copyright years. 2020-01-01 12:51:42 +01:00
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++: Fixes for feature test macros (PR 91480) 2020-04-28 23:40:18 +01:00
stl_list.h libstdc++: Add comparison operators to sequence containers 2020-04-17 23:41:04 +01:00
stl_map.h libstdc++: Remove non-standard feature test macros 2020-04-22 22:54:34 +01:00
stl_multimap.h libstdc++: Add comparison operators to associative containers 2020-04-20 17:50:10 +01:00
stl_multiset.h libstdc++: Add comparison operators to associative containers 2020-04-20 17:50:10 +01:00
stl_numeric.h libstdc++: P1645R1 constexpr for <numeric> algorithms 2020-02-26 10:23:17 -05:00
stl_pair.h libstdc++: Fixes for feature test macros (PR 91480) 2020-04-28 23:40:18 +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 Update copyright years. 2020-01-01 12:51:42 +01:00
stl_relops.h Update copyright years. 2020-01-01 12:51:42 +01:00
stl_set.h libstdc++: Add comparison operators to associative containers 2020-04-20 17:50:10 +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 Update copyright years. 2020-01-01 12:51:42 +01:00
stl_tree.h libstdc++: Add comparison operators to associative containers 2020-04-20 17:50:10 +01:00
stl_uninitialized.h Update copyright years. 2020-01-01 12:51:42 +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++: Fix compilation with released versions of Clang 2020-03-18 12:55:29 +00:00
streambuf.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
string_view.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
stringfwd.h Update copyright years. 2020-01-01 12:51:42 +01:00
uniform_int_dist.h libstdc++: Reduce header dependencies for C++20 (PR 92546) 2020-02-17 15:43:43 +00:00
unique_lock.h Update copyright years. 2020-01-01 12:51:42 +01:00
unique_ptr.h libstdc++: Add comparison operators to std::shared_ptr (PR 94562) 2020-04-14 21:54:55 +01:00
unordered_map.h libstdc++: Remove non-standard feature test macros 2020-04-22 22:54:34 +01:00
unordered_set.h libstdc++: Remove operator!= overloads for unordered containers 2020-04-19 21:05:32 +01:00
uses_allocator.h Update copyright years. 2020-01-01 12:51:42 +01:00
valarray_after.h Update copyright years. 2020-01-01 12:51:42 +01:00
valarray_array.h Update copyright years. 2020-01-01 12:51:42 +01:00
valarray_array.tcc Update copyright years. 2020-01-01 12:51:42 +01:00
valarray_before.h Update copyright years. 2020-01-01 12:51:42 +01:00
vector.tcc Update copyright years. 2020-01-01 12:51:42 +01:00