libstdc++: Add freestanding feature test macros (P2407R5)
commit43626143c9d4411353709bab09631d267bb4dadd
authorJonathan Wakely <jwakely@redhat.com>
Mon, 20 Nov 2023 21:39:58 +0000 (20 21:39 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Tue, 21 Nov 2023 15:58:21 +0000 (21 15:58 +0000)
tree3e50a262d6063fd111b70a95675e86f98c4485f8
parent1fa85dcf656e2f2c7e483c9ed3c2680bf7db6858
libstdc++: Add freestanding feature test macros (P2407R5)

This C++26 change makes several classes "partially freestanding", but we
already fully supported them in freestanding mode. All we need to do is
define the new feature test macros and add tests for them.

libstdc++-v3/ChangeLog:

* include/bits/version.def (freestanding_algorithm)
(freestanding_array, freestanding_optional)
(freestanding_string_view, freestanding_variant): Add.
* include/bits/version.h: Regenerate.
* include/std/algorithm (__glibcxx_want_freestanding_algorithm):
Define.
* include/std/array (__glibcxx_want_freestanding_array):
Define.
* include/std/optional (__glibcxx_want_freestanding_optional):
Define.
* include/std/string_view
(__glibcxx_want_freestanding_string_view): Define.
* include/std/variant (__glibcxx_want_freestanding_variant):
Define.
* testsuite/20_util/optional/version.cc: Add checks for
__cpp_lib_freestanding_optional.
* testsuite/20_util/variant/version.cc: Add checks for
__cpp_lib_freestanding_variant.
* testsuite/23_containers/array/tuple_interface/get_neg.cc:
Adjust dg-error line numbers.
* testsuite/21_strings/basic_string_view/requirements/version.cc:
New test.
* testsuite/23_containers/array/requirements/version.cc: New
test.
* testsuite/25_algorithms/fill_n/requirements/version.cc: New
test.
* testsuite/25_algorithms/swap_ranges/requirements/version.cc:
New test.
14 files changed:
libstdc++-v3/include/bits/version.def
libstdc++-v3/include/bits/version.h
libstdc++-v3/include/std/algorithm
libstdc++-v3/include/std/array
libstdc++-v3/include/std/optional
libstdc++-v3/include/std/string_view
libstdc++-v3/include/std/variant
libstdc++-v3/testsuite/20_util/optional/version.cc
libstdc++-v3/testsuite/20_util/variant/version.cc
libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/version.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/array/requirements/version.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
libstdc++-v3/testsuite/25_algorithms/fill_n/requirements/version.cc [new file with mode: 0644]
libstdc++-v3/testsuite/25_algorithms/swap_ranges/requirements/version.cc [new file with mode: 0644]