]> git.ipfire.org Git - thirdparty/gcc.git/commit
libstdc++: Fix range access for empty std::valarray [PR103022]
authorJonathan Wakely <jwakely@redhat.com>
Mon, 1 Nov 2021 11:06:51 +0000 (11:06 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Mon, 1 Nov 2021 13:28:55 +0000 (13:28 +0000)
commit0111975c07233512e63371b2bc99f88d9670bbc9
tree1f21de0040ccdd56e3d775e1f583a5553867ace1
parentd0d8bd6378f753c554fc541f4eb6c9f019c5b12d
libstdc++: Fix range access for empty std::valarray [PR103022]

The std::begin and std::end overloads for std::valarray are defined in
terms of std::addressof(v[0]) which is undefined for an empty valarray.

libstdc++-v3/ChangeLog:

PR libstdc++/103022
* include/std/valarray (begin, end): Do not dereference an empty
valarray. Add noexcept and [[nodiscard]].
* testsuite/26_numerics/valarray/range_access.cc: Check empty
valarray. Check iterator properties. Run as well as compiling.
* testsuite/26_numerics/valarray/range_access2.cc: Likewise.
* testsuite/26_numerics/valarray/103022.cc: New test.

(cherry picked from commit 91bac9fed5d082f0b180834110ebc0f46f97599a)
libstdc++-v3/include/std/valarray
libstdc++-v3/testsuite/26_numerics/valarray/103022.cc [new file with mode: 0644]
libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc
libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc