diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2023-07-26 14:05:58 +0100 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2023-07-26 17:02:46 +0100 |
commit | c01b344e814001e07fd304ce98d013d811e90192 (patch) | |
tree | 9168fd0d7d64763cdc7236fd7beb224b056a5ea6 | |
parent | d74aed3d7aefbb661ae629a91ca7baa4916085f0 (diff) | |
download | gcc-c01b344e814001e07fd304ce98d013d811e90192.zip gcc-c01b344e814001e07fd304ce98d013d811e90192.tar.gz gcc-c01b344e814001e07fd304ce98d013d811e90192.tar.bz2 |
libstdc++: Add deprecated attribute to std::random_shuffle declarations
We already have these attributes on the definitions in <bits/stl_algo.h>
but they don't work due to PR c++/84542. Add the attributes to the
declarations in <bits/algorithmfwd.h> as well, and add a test.
libstdc++-v3/ChangeLog:
* include/bits/algorithmfwd.h (random_shuffle): Add deprecated
attribute.
* include/bits/stl_algo.h (random_shuffle): Correct comments.
* testsuite/25_algorithms/random_shuffle/1.cc: Disable
deprecated warnings.
* testsuite/25_algorithms/random_shuffle/59603.cc: Likewise.
* testsuite/25_algorithms/random_shuffle/moveable.cc: Likewise.
* testsuite/25_algorithms/random_shuffle/deprecated.cc: New
test.
6 files changed, 27 insertions, 3 deletions
diff --git a/libstdc++-v3/include/bits/algorithmfwd.h b/libstdc++-v3/include/bits/algorithmfwd.h index 0d62390..130943d 100644 --- a/libstdc++-v3/include/bits/algorithmfwd.h +++ b/libstdc++-v3/include/bits/algorithmfwd.h @@ -832,10 +832,12 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO #if _GLIBCXX_HOSTED template<typename _RAIter> + _GLIBCXX14_DEPRECATED_SUGGEST("std::shuffle") void random_shuffle(_RAIter, _RAIter); template<typename _RAIter, typename _Generator> + _GLIBCXX14_DEPRECATED_SUGGEST("std::shuffle") void random_shuffle(_RAIter, _RAIter, #if __cplusplus >= 201103L diff --git a/libstdc++-v3/include/bits/stl_algo.h b/libstdc++-v3/include/bits/stl_algo.h index 2c52ed5..3abf0f6 100644 --- a/libstdc++-v3/include/bits/stl_algo.h +++ b/libstdc++-v3/include/bits/stl_algo.h @@ -4479,7 +4479,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO * equally likely. * * @deprecated - * Since C++14 `std::random_shuffle` is not part of the C++ standard. + * Since C++17, `std::random_shuffle` is not part of the C++ standard. * Use `std::shuffle` instead, which was introduced in C++11. */ template<typename _RandomAccessIterator> @@ -4518,7 +4518,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO * range `[0, N)`. * * @deprecated - * Since C++14 `std::random_shuffle` is not part of the C++ standard. + * Since C++17, `std::random_shuffle` is not part of the C++ standard. * Use `std::shuffle` instead, which was introduced in C++11. */ template<typename _RandomAccessIterator, typename _RandomNumberGenerator> @@ -4546,7 +4546,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO } } #endif // HOSTED -#endif // C++11 || USE_DEPRECATED +#endif // <= C++11 || USE_DEPRECATED /** * @brief Move elements for which a predicate is true to the beginning diff --git a/libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc b/libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc index 200c097..2a8c632 100644 --- a/libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc +++ b/libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc @@ -15,6 +15,7 @@ // with this library; see the file COPYING3. If not see // <http://www.gnu.org/licenses/>. +// { dg-options "-Wno-deprecated-declarations" } // { dg-add-options using-deprecated } // { dg-require-effective-target hosted } diff --git a/libstdc++-v3/testsuite/25_algorithms/random_shuffle/59603.cc b/libstdc++-v3/testsuite/25_algorithms/random_shuffle/59603.cc index c678eb3..a17429e 100644 --- a/libstdc++-v3/testsuite/25_algorithms/random_shuffle/59603.cc +++ b/libstdc++-v3/testsuite/25_algorithms/random_shuffle/59603.cc @@ -16,6 +16,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do run { target c++11 } } +// { dg-options "-Wno-deprecated-declarations" } // { dg-add-options using-deprecated } // { dg-require-debug-mode "" } diff --git a/libstdc++-v3/testsuite/25_algorithms/random_shuffle/deprecated.cc b/libstdc++-v3/testsuite/25_algorithms/random_shuffle/deprecated.cc new file mode 100644 index 0000000..4bc58a6 --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/random_shuffle/deprecated.cc @@ -0,0 +1,19 @@ +// { dg-do compile } +// { dg-add-options using-deprecated } +// { dg-require-effective-target hosted } + +// std::random_shuffle was deprecated in C++17 and removed in C++17. + +#include <algorithm> + +std::ptrdiff_t rando(std::ptrdiff_t n); + +void +test_depr(int* first, int* last) +{ + std::random_shuffle(first, last); + // { dg-warning "deprecated" "" { target c++14 } 14 } + + std::random_shuffle(first, last, rando); + // { dg-warning "deprecated" "" { target c++14 } 17 } +} diff --git a/libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc b/libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc index 2e2cada..e74e6f1 100644 --- a/libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc +++ b/libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc @@ -1,4 +1,5 @@ // { dg-do run { target c++11 } } +// { dg-options "-Wno-deprecated-declarations" } // { dg-add-options using-deprecated } // { dg-require-effective-target hosted } |