]> git.ipfire.org Git - thirdparty/gcc.git/commit
libstdc++: Reduce header dependencies for C++20 std::erase [PR92546]
authorJonathan Wakely <jwakely@redhat.com>
Fri, 1 Oct 2021 19:37:02 +0000 (20:37 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Fri, 1 Oct 2021 19:37:02 +0000 (20:37 +0100)
commitacf3a21cbc26b39b73c0006300f35ff017ddd6cb
treedeb9da5edff5a2769cc22233ebf2d99cc8307232
parentff7793bea465019683b3a07d7ffceb6eae22def5
libstdc++: Reduce header dependencies for C++20 std::erase [PR92546]

This reduces the preprocessed size of <deque>, <string> and <vector> by
not including <bits/stl_algo.h> for std::remove and std::remove_if.

Also unwrap iterators using __niter_base, to avoid redundant debug mode
checks.

PR libstdc++/92546
* include/bits/erase_if.h (__erase_nodes_if): Use __niter_base to
unwrap debug iterators.
* include/bits/refwrap.h: Do not error if included in C++03.
* include/bits/stl_algo.h (__remove_if): Move to ...
* include/bits/stl_algobase.h (__remove_if): ... here.
* include/std/deque (erase, erase_if): Use __remove_if instead of
remove and remove_if.
* include/std/string (erase, erase_if): Likewise.
* include/std/vector (erase, erase_if): Likewise.
libstdc++-v3/include/bits/erase_if.h
libstdc++-v3/include/bits/refwrap.h
libstdc++-v3/include/bits/stl_algo.h
libstdc++-v3/include/bits/stl_algobase.h
libstdc++-v3/include/std/deque
libstdc++-v3/include/std/string
libstdc++-v3/include/std/vector