aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/23_containers/multimap/pmr_typedefs.cc
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2022-05-19 23:38:23 +0100
committerJonathan Wakely <jwakely@redhat.com>2022-05-19 23:38:23 +0100
commit8ccdc7ce33f5e7ca509e5b9f835ed4719db21ffd (patch)
tree35b201acf391285912ba2ad28de5baff3c197b13 /libstdc++-v3/testsuite/23_containers/multimap/pmr_typedefs.cc
parentd863ba23fb16122bb0547b0c678173be0d98f43c (diff)
libstdc++: Ensure pmr aliases work without <memory_resource>
Currently the alias templates for std::pmr::vector, std::pmr::string etc. are defined using a forward declaration for polymorphic_allocator. This means you can't actually use the alias templates unless you also include <memory_resource>. The rationale for that is that it's a fairly large header, and most users don't need it. This isn't uncontroversial though, and LWG 3681 questions whether it's even conforming. This change adds a new <bits/memory_resource.h> header with the minimum needed to use polymorphic_allocator and the std::pmr container aliases. Including <memory_resource> is still necessary to use the program-wide resource objects, or the pool resources or monotonic buffer resource. libstdc++-v3/ChangeLog: * include/Makefile.am: Add new header. * include/Makefile.in: Regenerate. * include/bits/memory_resource.h: New file. * include/std/deque: Include <bits/memory_resource.h>. * include/std/forward_list: Likewise. * include/std/list: Likewise. * include/std/map: Likewise. * include/std/memory_resource (pmr::memory_resource): Move to new <bits/memory_resource.h> header. (pmr::polymorphic_allocator): Likewise. * include/std/regex: Likewise. * include/std/set: Likewise. * include/std/stacktrace: Likewise. * include/std/string: Likewise. * include/std/unordered_map: Likewise. * include/std/unordered_set: Likewise. * include/std/vector: Likewise. * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Remove <memory_resource> header and check construction. * testsuite/23_containers/deque/types/pmr_typedefs.cc: Likewise. * testsuite/23_containers/forward_list/pmr_typedefs.cc: Likewise. * testsuite/23_containers/list/pmr_typedefs.cc: Likewise. * testsuite/23_containers/map/pmr_typedefs.cc: Likewise. * testsuite/23_containers/multimap/pmr_typedefs.cc: Likewise. * testsuite/23_containers/multiset/pmr_typedefs.cc: Likewise. * testsuite/23_containers/set/pmr_typedefs.cc: Likewise. * testsuite/23_containers/unordered_map/pmr_typedefs.cc: Likewise. * testsuite/23_containers/unordered_multimap/pmr_typedefs.cc: Likewise. * testsuite/23_containers/unordered_multiset/pmr_typedefs.cc: Likewise. * testsuite/23_containers/unordered_set/pmr_typedefs.cc: Likewise. * testsuite/23_containers/vector/pmr_typedefs.cc: Likewise. * testsuite/28_regex/match_results/pmr_typedefs.cc: Likewise. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/variadic-tuple.C: Qualify function to avoid ADL finding std::make_tuple.
Diffstat (limited to 'libstdc++-v3/testsuite/23_containers/multimap/pmr_typedefs.cc')
-rw-r--r--libstdc++-v3/testsuite/23_containers/multimap/pmr_typedefs.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/libstdc++-v3/testsuite/23_containers/multimap/pmr_typedefs.cc b/libstdc++-v3/testsuite/23_containers/multimap/pmr_typedefs.cc
index 2312ad680a2..13b0970a100 100644
--- a/libstdc++-v3/testsuite/23_containers/multimap/pmr_typedefs.cc
+++ b/libstdc++-v3/testsuite/23_containers/multimap/pmr_typedefs.cc
@@ -18,7 +18,8 @@
// { dg-do compile { target c++17 } }
#include <map>
-#include <memory_resource>
+
+std::pmr::multimap<int, int> c{{1,0}, {2,0}, {3,0}, {4,0}};
struct X { };
struct Y { };