| 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 |
| |