blob: d964586c1cadd0cef0635a5c8f95380171e6d321 [file] [log] [blame]
From 6cec5aefc97ad219b6fd5a4132f88f7c8f6800ee Mon Sep 17 00:00:00 2001
From: Sergei Trofimovich <slyich@gmail.com>
Date: Wed, 8 Mar 2023 11:31:56 +0000
Subject: [PATCH] custom allocators: define missing 'rebind' type (#3895)
Upstream-Status: Backport [https://github.com/nlohmann/json/commit/6cec5aefc97ad219b6fd5a4132f88f7c8f6800ee]
Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
---
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 76e3b03f..f2e63552 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 2bb9b32e..dbafb436 100644
--- a/tests/src/unit-regression2.cpp
+++ b/tests/src/unit-regression2.cpp
@@ -189,6 +189,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.25.1