Forward declare debug containers so std::pmr aliases work

Programming / Compilers / GCC - redi [138bc75d-0d04-0410-961f-82ee72b054a4] - 24 August 2018 17:43 EDT

Prior to this change, including a header when _GLIBCXX_DEBUG is also defined would fail to compile in C++17 or later. The header would include the standard header which defined std::pmr::xxx as an alias for std::xxx. But in Debug Mode std::xxx refers to std::__debug::xxx which has not been defined yet (because it is in after the inclusion of ).

This adds declarations of the debug containers before including the non-Debug Mode header, so that the std::pmr::xxx aliases work.

- include/debug/deque (std::__debug::deque): Declare.
- include/debug/forward_list (std::__debug::forward_list): Declare.
- include/debug/list (std::__debug::list): Declare.
- include/debug/map (std::__debug::map): Declare.
- include/debug/set (std::__debug::set): Declare.
- include/debug/unordered_map (std::__debug::unordered_map): Declare.
- include/debug/unordered_set (std::__debug::unordered_set): Declare.
- include/debug/vector (std::__debug::vector): Declare.
- testsuite/23_containers/deque/types/pmr_typedefs_debug.cc: New test.
- testsuite/23_containers/forward_list/pmr_typedefs_debug.cc: New test.
- testsuite/23_containers/list/pmr_typedefs_debug.cc: New test.
- testsuite/23_containers/map/pmr_typedefs_debug.cc: New test.
- testsuite/23_containers/multimap/pmr_typedefs_debug.cc: New test.
- testsuite/23_containers/multiset/pmr_typedefs_debug.cc: New test.
- testsuite/23_containers/set/pmr_typedefs_debug.cc: New test.
- testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc: New test.
- testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc: New test.
- testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc: New test.
- testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc: New test.
- testsuite/23_containers/vector/cons/destructible_debug_neg.cc: Adjust dg-error lineno.
- testsuite/23_containers/vector/types/pmr_typedefs_debug.cc: New test.

94857fa1a96 Forward declare debug containers so std::pmr aliases work
libstdc++-v3/ChangeLog | 31 ++++++++++++++++++++++
libstdc++-v3/include/debug/deque | 5 ++++
libstdc++-v3/include/debug/forward_list | 5 ++++
libstdc++-v3/include/debug/list | 5 ++++
libstdc++-v3/include/debug/map | 8 ++++++
libstdc++-v3/include/debug/set | 6 +++++
libstdc++-v3/include/debug/unordered_map | 10 +++++++
libstdc++-v3/include/debug/unordered_set | 7 +++++
libstdc++-v3/include/debug/vector | 5 ++++
.../deque/types/pmr_typedefs_debug.cc | 25 +++++++++++++++++
.../forward_list/pmr_typedefs_debug.cc | 25 +++++++++++++++++
.../23_containers/list/pmr_typedefs_debug.cc | 25 +++++++++++++++++
.../23_containers/map/pmr_typedefs_debug.cc | 26 ++++++++++++++++++
.../23_containers/multimap/pmr_typedefs_debug.cc | 26 ++++++++++++++++++
.../23_containers/multiset/pmr_typedefs_debug.cc | 26 ++++++++++++++++++
.../23_containers/set/pmr_typedefs_debug.cc | 26 ++++++++++++++++++
.../unordered_map/pmr_typedefs_debug.cc | 26 ++++++++++++++++++
.../unordered_multimap/pmr_typedefs_debug.cc | 27 +++++++++++++++++++
.../unordered_multiset/pmr_typedefs_debug.cc | 26 ++++++++++++++++++
.../unordered_set/pmr_typedefs_debug.cc | 26 ++++++++++++++++++
.../vector/cons/destructible_debug_neg.cc | 2 +-
.../vector/types/pmr_typedefs_debug.cc | 25 +++++++++++++++++
22 files changed, 392 insertions(+), 1 deletion(-)

Upstream: gcc.gnu.org


  • Share