gcc/libstdc++-v3/testsuite/25_algorithms
François Dumont 4e05c918d2 libstdc++: Specialize copy/copy_n for istreambuf_iterator and deque iterators
Add __copy_n_a overloads for std::deque iterators to replace with C memmove
when possible. Expose std::copy_n implementation details in pre-C++11 modes
and use it for std::copy overloads.

libstdc++-v3/ChangeLog

	* include/bits/stl_algo.h (__copy_n_a): Move to ...
	* include/bits/stl_algobase.h (__copy_n_a): ...here. Add __strict
	parameter.
	(__copy_n_a(istreambuf_iterator<>, _Size, _Deque_iterator<>, bool)):
	Declare.
	(__niter_base(const _Safe_iterator<_Ite, _Seq,
	random_access_iterator_tag>&)): Declare.
	(__copy_move_a2(istreambuf_iterator<>, istreambuf_iterator<>,
	_Deque_iterator<>)): Declare.
	* include/bits/deque.tcc
	(__copy_move_a2(istreambuf_iterator<>, istreambuf_iterator<>,
	_Deque_iterator<>)): New.
	(__copy_n_a(istreambuf_iterator<>, _Size, _Deque_iterator<>, bool)):
	New.
	* include/bits/streambuf_iterator.h
	(__copy_n_a(istreambuf_iterator<>, _Size, _CharT*, bool)): Adapt.
	* include/debug/safe_iterator.tcc (__niter_base): New.
	* testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc
	(test03): New.
	* testsuite/25_algorithms/copy/streambuf_iterators/char/debug/deque_neg.cc:
	New test.
	* testsuite/25_algorithms/copy_n/debug/istreambuf_ite_deque_neg.cc:
	New test.
	* testsuite/25_algorithms/copy_n/istreambuf_iterator/2.cc: New test.
	* testsuite/25_algorithms/copy_n/istreambuf_iterator/deque.cc:
	New test.
2020-06-04 22:27:47 +02:00
..
adjacent_find libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
advance/istreambuf_iterators Update copyright years. 2020-01-01 12:51:42 +01:00
all_of libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
any_of libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
binary_search libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
clamp libstdc++: P1243R4 Rangify new algorithms 2020-02-18 11:06:49 -05:00
copy libstdc++: Specialize copy/copy_n for istreambuf_iterator and deque iterators 2020-06-04 22:27:47 +02:00
copy_backward libstdc++: Workaround is_trivially_copyable<volatile T> (PR 94013) 2020-03-03 21:39:19 +00:00
copy_if libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
copy_n libstdc++: Specialize copy/copy_n for istreambuf_iterator and deque iterators 2020-06-04 22:27:47 +02:00
count libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
count_if libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
equal libstdc++: Workaround is_trivially_copyable<volatile T> (PR 94013) 2020-03-03 21:39:19 +00:00
equal_range libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
fill libstdc++ std::fill overload for std::vector<bool>::iterator 2020-05-06 23:28:22 +02:00
fill_n libstdc++: Make byte-sized std::fill_n a constant expression (PR 94933) 2020-05-03 13:33:15 +01:00
find libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
find_end libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
find_first_of libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
find_if libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
find_if_not libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
for_each libstdc++: P1243R4 Rangify new algorithms 2020-02-18 11:06:49 -05:00
generate libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
generate_n libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
headers Update copyright years. 2020-01-01 12:51:42 +01:00
heap libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
includes libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
inplace_merge libstdc++: -D_GLIBCXX_DEBUG fixes in the constrained algos tests 2020-02-27 12:47:17 -05:00
is_heap Update copyright years. 2020-01-01 12:51:42 +01:00
is_heap_until Update copyright years. 2020-01-01 12:51:42 +01:00
is_partitioned libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
is_permutation libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
is_sorted libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
is_sorted_until libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
iter_swap Update copyright years. 2020-01-01 12:51:42 +01:00
lexicographical_compare libstdc++: Workaround is_trivially_copyable<volatile T> (PR 94013) 2020-03-03 21:39:19 +00:00
lexicographical_compare_three_way Update copyright years. 2020-01-01 12:51:42 +01:00
lower_bound libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
make_heap Update copyright years. 2020-01-01 12:51:42 +01:00
max libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
max_element libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
merge libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
min libstdc++: Make _GLIBCXX_CONCEPT_CHECKS more constexpr-friendly 2020-02-27 10:52:28 +00:00
min_element libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
minmax libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
minmax_element libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
mismatch libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
move libstdc++: Workaround is_trivially_copyable<volatile T> (PR 94013) 2020-03-03 21:39:19 +00:00
move_backward libstdc++: Workaround is_trivially_copyable<volatile T> (PR 94013) 2020-03-03 21:39:19 +00:00
next_permutation libstdc++: P2106R0 Alternative wording for GB315 and GB316 2020-02-18 11:06:50 -05:00
none_of libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
nth_element libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
partial_sort libstdc++: -D_GLIBCXX_DEBUG fixes in the constrained algos tests 2020-02-27 12:47:17 -05:00
partial_sort_copy libstdc++: -D_GLIBCXX_DEBUG fixes in the constrained algos tests 2020-02-27 12:47:17 -05:00
partition libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
partition_copy libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
partition_point libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
pop_heap Update copyright years. 2020-01-01 12:51:42 +01:00
prev_permutation libstdc++: P2106R0 Alternative wording for GB315 and GB316 2020-02-18 11:06:50 -05:00
pstl libstdc++: Define __cpp_lib_execution feature test macro 2020-04-22 22:54:35 +01:00
push_heap Update copyright years. 2020-01-01 12:51:42 +01:00
random_shuffle Update copyright years. 2020-01-01 12:51:42 +01:00
remove libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
remove_copy libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
remove_copy_if libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
remove_if libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
replace libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
replace_copy libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
replace_copy_if libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
replace_if libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
reverse libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
reverse_copy libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
rotate libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
rotate_copy libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
sample libstdc++: P1243R4 Rangify new algorithms 2020-02-18 11:06:49 -05:00
search libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
search_n libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
set_difference libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
set_intersection libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
set_symmetric_difference libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
set_union libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
shift_left libstdc++: P0769R2 Add shift to <algorithm> 2020-02-24 10:08:57 -05:00
shift_right libstdc++: P0769R2 Add shift to <algorithm> 2020-02-24 10:08:57 -05:00
shuffle libstdc++: -D_GLIBCXX_DEBUG fixes in the constrained algos tests 2020-02-27 12:47:17 -05:00
sort libstdc++: -D_GLIBCXX_DEBUG fixes in the constrained algos tests 2020-02-27 12:47:17 -05:00
sort_heap Update copyright years. 2020-01-01 12:51:42 +01:00
stable_partition libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
stable_sort libstdc++: -D_GLIBCXX_DEBUG fixes in the constrained algos tests 2020-02-27 12:47:17 -05:00
swap Update copyright years. 2020-01-01 12:51:42 +01:00
swap_ranges libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
transform libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
unique libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
unique_copy libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
upper_bound libstdc++: Implement C++20 constrained algorithms 2020-02-06 20:08:34 -05:00
constexpr_macro.cc Update copyright years. 2020-01-01 12:51:42 +01:00
cpp_lib_constexpr.cc Update copyright years. 2020-01-01 12:51:42 +01:00