From 8a5a2dc9f170fb79d3fb19e4263a28bdd1603dec Mon Sep 17 00:00:00 2001
From: Sergei Trofimovich <slyich@gmail.com>
Date: Wed, 8 Mar 2023 11:31:56 +0000
Subject: [PATCH 2/2] custom allocators: define missing 'rebind' type (#3895)
(cherry picked from commit 6cec5aefc97ad219b6fd5a4132f88f7c8f6800ee)
---
tests/src/unit-allocator.cpp | 9 +++++++++
tests/src/unit-regression2.cpp | 9 +++++++++
2 files changed, 18 insertions(+)
diff --git a/tests/src/unit-allocator.cpp b/tests/src/unit-allocator.cpp
index c6b77ed6..c3708e89 100644
--- a/tests/src/unit-allocator.cpp
+++ b/tests/src/unit-allocator.cpp
@@ -20,11 +20,20 @@ struct bad_allocator : std::allocator<T>
{
using std::allocator<T>::allocator;
+ bad_allocator() = default;
+ template<class U> bad_allocator(const bad_allocator<U>& /*unused*/) { }
+
template<class... Args>
void construct(T* /*unused*/, Args&& ... /*unused*/)
{
throw std::bad_alloc();
}
+
+ template <class U>
+ struct rebind
+ {
+ using other = bad_allocator<U>;
+ };
};
} // namespace
diff --git a/tests/src/unit-regression2.cpp b/tests/src/unit-regression2.cpp
index 503d2a4f..8a141539 100644
--- a/tests/src/unit-regression2.cpp
+++ b/tests/src/unit-regression2.cpp
@@ -187,6 +187,15 @@ class my_allocator : public std::allocator<T>
{
public:
using std::allocator<T>::allocator;
+
+ my_allocator() = default;
+ template<class U> my_allocator(const my_allocator<U>& /*unused*/) { }
+
+ template <class U>
+ struct rebind
+ {
+ using other = my_allocator<U>;
+ };
};
/////////////////////////////////////////////////////////////////////
--
2.41.0