]> git.ipfire.org Git - thirdparty/gcc.git/commit - libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc
libstdc++: Add attribute to features deprecated in C++17 [PR91260]
authorJonathan Wakely <jwakely@redhat.com>
Tue, 11 Jan 2022 18:42:38 +0000 (18:42 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Fri, 14 Jan 2022 11:27:50 +0000 (11:27 +0000)
commitde196e5dd8ea4d0ed01a8c265afdd3676e27545b
tree364cecd6d2d4a0932a604b3edeeaa82dcfe3686c
parentac6a1181209b756882f89cdba6128565fad1a56e
libstdc++: Add attribute to features deprecated in C++17 [PR91260]

There are a lot of things in the C++ standard library which were
deprecated in C++11, and more in C++17.  Some of them were removed after
deprecation and are no longer present in the standard at all. We have
not removed these from libstdc++ because keeping them as non-standard
extensions is conforming, and avoids gratuitously breaking user code,
and in some cases we need to keep using them to avoid ABI changes. But
we should at least give a warning for using them. That has not been done
previously because of the library's own uses of them (e.g. the
std::iterator class template used as a base class).

This adds deprecated attributes to the relevant components, and then
goes through the whole library to add diagnostic pragmas where needed to
suppress warnings about our internal uses of them. The tests are updated
to either expect the additional warnings, or to suppress them where we
aren't interested in them.

libstdc++-v3/ChangeLog:

PR libstdc++/91260
PR libstdc++/91383
PR libstdc++/95065
* include/backward/binders.h (bind1st, bind2nd): Add deprecated
attribute.
* include/bits/refwrap.h (_Maybe_unary_or_binary_function):
Disable deprecated warnings for base classes.
(_Reference_wrapper_base): Likewise.
* include/bits/shared_ptr_base.h (_Sp_owner_less): Likewise.
* include/bits/stl_bvector.h (_Bit_iterator_base): Likewise.
* include/bits/stl_function.h (unary_function, binary_function):
Add deprecated attribute.
(unary_negate, not1, binary_negate, not2, ptr_fun)
(pointer_to_unary_function, pointer_to_binary_function)
(mem_fun_t, const_mem_fun_t, mem_fun_ref_t, const_mem_fun_ref_t)
(mem_fun1_t, const_mem_fun1_t, mem_fun_ref1_t)
(const_mem_fun1_ref_t, mem_fun, mem_fun_ref): Add deprecated
attributes.
* include/bits/stl_iterator.h: Disable deprecated warnings for
std::iterator base classes.
* include/bits/stl_iterator_base_types.h (iterator): Add
deprecated attribute.
* include/bits/stl_map.h (map::value_compare): Disable
deprecated warnings for base class.
* include/bits/stl_multimap.h (multimap::value_compare):
Likewise.
* include/bits/stl_raw_storage_iter.h (raw_storage_iterator):
Add deprecated attribute.
* include/bits/stl_tempbuf.h (get_temporary_buffer): Likewise.
* include/bits/stream_iterator.h: Disable deprecated warnings.
* include/bits/streambuf_iterator.h: Likewise.
* include/ext/bitmap_allocator.h: Remove unary_function base
classes.
* include/ext/functional: Disable deprecated warnings.
* include/ext/rope: Likewise.
* include/ext/throw_allocator.h: Likewise.
* include/std/type_traits (result_of): Add deprecated attribute.
* include/tr1/functional: Disable deprecated warnings.
* include/tr1/functional_hash.h: Likewise.
* testsuite/20_util/function_objects/binders/1.cc: Add
-Wno-disable-deprecations.
* testsuite/20_util/function_objects/binders/3113.cc: Likewise.
* testsuite/20_util/function_objects/constexpr.cc: Add
dg-warning.
* testsuite/20_util/raw_storage_iterator/base.cc: Likewise.
* testsuite/20_util/raw_storage_iterator/dr2127.cc: Likewise.
* testsuite/20_util/raw_storage_iterator/requirements/base_classes.cc:
Likewise.
* testsuite/20_util/raw_storage_iterator/requirements/explicit_instantiation/1.cc:
Likewise.
* testsuite/20_util/raw_storage_iterator/requirements/typedefs.cc:
Likewise.
* testsuite/20_util/reference_wrapper/24803.cc:
Likewise.
* testsuite/20_util/reference_wrapper/typedefs.cc: Enable for
C++20 and check for absence of nested types.
* testsuite/20_util/shared_ptr/comparison/less.cc: Remove
std::binary_function base class.
* testsuite/20_util/temporary_buffer.cc: Add dg-warning.
* testsuite/21_strings/basic_string/cons/char/69092.cc: Remove
std::iterator base class.
* testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc:
Likewise.
* testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc:
Likewise.
* testsuite/24_iterators/insert_iterator/requirements/base_classes.cc:
Likewise.
* testsuite/24_iterators/istream_iterator/requirements/base_classes.cc:
Likewise.
* testsuite/24_iterators/istreambuf_iterator/92285.cc:
Likewise.
* testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc:
Likewise.
* testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc:
Likewise.
* testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc:
Likewise.
* testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc:
Likewise.
* testsuite/25_algorithms/copy/34595.cc:
Likewise.
* testsuite/25_algorithms/minmax/3.cc: Remove std::binary_function
base class.
* testsuite/25_algorithms/all_of/requirements/explicit_instantiation/2.cc:
Disable deprecated warnings.
* testsuite/25_algorithms/all_of/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/any_of/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/any_of/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/count_if/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/count_if/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/find_end/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/find_end/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/find_if/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/find_if/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/for_each/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/for_each/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/none_of/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/none_of/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/partition/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/partition/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/search/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/search/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/search_n/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/search_n/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/25_algorithms/transform/requirements/explicit_instantiation/2.cc:
Likewise.
* testsuite/25_algorithms/transform/requirements/explicit_instantiation/pod.cc:
Likewise.
* testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc: Add
dg-warning.
* testsuite/ext/pb_ds/example/priority_queue_erase_if.cc:
Likewise.
* testsuite/ext/pb_ds/example/priority_queue_split_join.cc:
Likewise.
* testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc:
Disable deprecated warnings.
* testsuite/tr1/6_containers/hash/requirements/base_classes.cc:
Likewise.
* testsuite/util/regression/trait/erase_if_fn.hpp: Remove
std::unary_function base classes.
* testsuite/util/testsuite_iterators.h (output_iterator_wrapper):
Remove std::iterator base classes.
99 files changed:
libstdc++-v3/include/backward/binders.h
libstdc++-v3/include/bits/refwrap.h
libstdc++-v3/include/bits/shared_ptr_base.h
libstdc++-v3/include/bits/stl_bvector.h
libstdc++-v3/include/bits/stl_function.h
libstdc++-v3/include/bits/stl_iterator.h
libstdc++-v3/include/bits/stl_iterator_base_types.h
libstdc++-v3/include/bits/stl_map.h
libstdc++-v3/include/bits/stl_multimap.h
libstdc++-v3/include/bits/stl_raw_storage_iter.h
libstdc++-v3/include/bits/stl_tempbuf.h
libstdc++-v3/include/bits/stream_iterator.h
libstdc++-v3/include/bits/streambuf_iterator.h
libstdc++-v3/include/ext/bitmap_allocator.h
libstdc++-v3/include/ext/functional
libstdc++-v3/include/ext/rope
libstdc++-v3/include/ext/throw_allocator.h
libstdc++-v3/include/std/type_traits
libstdc++-v3/include/tr1/functional
libstdc++-v3/include/tr1/functional_hash.h
libstdc++-v3/testsuite/20_util/function_objects/binders/1.cc
libstdc++-v3/testsuite/20_util/function_objects/binders/3113.cc
libstdc++-v3/testsuite/20_util/function_objects/constexpr.cc
libstdc++-v3/testsuite/20_util/raw_storage_iterator/base.cc
libstdc++-v3/testsuite/20_util/raw_storage_iterator/dr2127.cc
libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/base_classes.cc
libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/explicit_instantiation/1.cc
libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/typedefs.cc
libstdc++-v3/testsuite/20_util/reference_wrapper/24803.cc
libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs.cc
libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc
libstdc++-v3/testsuite/20_util/temporary_buffer.cc
libstdc++-v3/testsuite/21_strings/basic_string/cons/char/69092.cc
libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc
libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc
libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/base_classes.cc
libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/base_classes.cc
libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/92285.cc
libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc
libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc
libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc
libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc
libstdc++-v3/testsuite/25_algorithms/all_of/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/all_of/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/any_of/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/any_of/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/copy/34595.cc
libstdc++-v3/testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/count_if/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/count_if/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/find_end/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/find_end/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/find_if/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/find_if/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/for_each/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/for_each/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/minmax/3.cc
libstdc++-v3/testsuite/25_algorithms/none_of/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/none_of/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/partition/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/partition/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/search/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/search/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/search_n/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/search_n/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/25_algorithms/transform/requirements/explicit_instantiation/2.cc
libstdc++-v3/testsuite/25_algorithms/transform/requirements/explicit_instantiation/pod.cc
libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc
libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_erase_if.cc
libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_split_join.cc
libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc
libstdc++-v3/testsuite/tr1/6_containers/hash/requirements/base_classes.cc
libstdc++-v3/testsuite/util/regression/trait/erase_if_fn.hpp
libstdc++-v3/testsuite/util/testsuite_iterators.h