aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2024-07-10 10:29:52 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2024-07-10 22:05:22 +0100
commitc5efc6eca8e3eee7038ae218cf7e2dbe9ed9d82a (patch)
treefe988dbbe222495378317a536125a0aa1582041b /libstdc++-v3/testsuite
parentcda469a59e222496248025e0834a15d466f79d4a (diff)
downloadgcc-c5efc6eca8e3eee7038ae218cf7e2dbe9ed9d82a.zip
gcc-c5efc6eca8e3eee7038ae218cf7e2dbe9ed9d82a.tar.gz
gcc-c5efc6eca8e3eee7038ae218cf7e2dbe9ed9d82a.tar.bz2
libstdc++: Use direct-initialization for std::vector<bool>'s allocator [PR115854]
The consensus in the standard committee is that this change shouldn't be necessary, and the Allocator requirements should require conversions between rebound allocators to be implicit. But we can make it work for now anyway. libstdc++-v3/ChangeLog: PR libstdc++/115854 * include/bits/stl_bvector.h (_Bvector_base): Convert allocator to rebound type explicitly. * testsuite/23_containers/vector/allocator/115854.cc: New test. * testsuite/23_containers/vector/bool/allocator/115854.cc: New test.
Diffstat (limited to 'libstdc++-v3/testsuite')
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/allocator/115854.cc10
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/bool/allocator/115854.cc10
2 files changed, 20 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/23_containers/vector/allocator/115854.cc b/libstdc++-v3/testsuite/23_containers/vector/allocator/115854.cc
new file mode 100644
index 0000000..6c9016b
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/vector/allocator/115854.cc
@@ -0,0 +1,10 @@
+// { dg-do compile { target c++11 } }
+
+#include <vector>
+#include <testsuite_allocator.h>
+
+__gnu_test::ExplicitConsAlloc<int> alloc;
+std::vector<int, __gnu_test::ExplicitConsAlloc<int>> v;
+std::vector<int, __gnu_test::ExplicitConsAlloc<int>> v1(alloc);
+std::vector<int, __gnu_test::ExplicitConsAlloc<int>> v2(v1, alloc);
+std::vector<int, __gnu_test::ExplicitConsAlloc<int>> v3(std::move(v1), alloc);
diff --git a/libstdc++-v3/testsuite/23_containers/vector/bool/allocator/115854.cc b/libstdc++-v3/testsuite/23_containers/vector/bool/allocator/115854.cc
new file mode 100644
index 0000000..14b28cc
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/vector/bool/allocator/115854.cc
@@ -0,0 +1,10 @@
+// { dg-do compile { target c++11 } }
+
+#include <vector>
+#include <testsuite_allocator.h>
+
+__gnu_test::ExplicitConsAlloc<bool> alloc;
+std::vector<bool, __gnu_test::ExplicitConsAlloc<bool>> v;
+std::vector<bool, __gnu_test::ExplicitConsAlloc<bool>> v1(alloc);
+std::vector<bool, __gnu_test::ExplicitConsAlloc<bool>> v2(v1, alloc);
+std::vector<bool, __gnu_test::ExplicitConsAlloc<bool>> v3(std::move(v1), alloc);