]> git.ipfire.org Git - thirdparty/gcc.git/commit
libstdc++: Replace use of std::min in ranges::uninitialized_xxx algos [PR101587]
authorJonathan Wakely <jwakely@redhat.com>
Wed, 26 Mar 2025 11:47:05 +0000 (11:47 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Tue, 8 Apr 2025 09:13:39 +0000 (10:13 +0100)
commitef11c1573d16db756c246ac029a99947bdc01aa3
tree54be386d6c71e8bccf4c60e5f2698c8692365209
parent73a62377ae638ce85c0a40327e67b41c861fb156
libstdc++: Replace use of std::min in ranges::uninitialized_xxx algos [PR101587]

Because ranges can have any signed integer-like type as difference_type,
it's not valid to use std::min(diff1, diff2). Instead of calling
std::min with an explicit template argument, this adds a new __mindist
helper that determines the common type and uses that with std::min.

libstdc++-v3/ChangeLog:

PR libstdc++/101587
* include/bits/ranges_uninitialized.h (__detail::__mindist):
New function object.
(ranges::uninitialized_copy, ranges::uninitialized_copy_n)
(ranges::uninitialized_move, ranges::uninitialized_move_n): Use
__mindist instead of std::min.
* testsuite/20_util/specialized_algorithms/uninitialized_copy/constrained.cc:
Check ranges with difference difference types.
* testsuite/20_util/specialized_algorithms/uninitialized_move/constrained.cc:
Likewise.

(cherry picked from commit f4b6acfc36fb1f72fdd5bf4da208515e6495a062)
libstdc++-v3/include/bits/ranges_uninitialized.h
libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/constrained.cc
libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_move/constrained.cc