summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Prichard <rprichard@google.com>2024-01-09 21:27:48 -0800
committerRyan Prichard <rprichard@google.com>2024-01-09 21:28:27 -0800
commit2371d51bf53b09441355a1d5500f62109bcb126a (patch)
tree4865764882776066061cb8c57817764698805f00
parent2b493211c6a1f57fd9a02364b9eb0c4a635a8c9e (diff)
downloadlibchrome-2371d51bf53b09441355a1d5500f62109bcb126a.tar.gz
Accommodate libc++ upgrade and C++20
C++20 removes the `pointer` member from std::allocator, and it also removes the `allocate` method which takes a hint parameter. Newer versions of libc++ implement these removals for -std=c++20 and up. The hint version of the `allocate` method is optional for satisfying the allocator requirement, even as far back as C++11, so remove the `hint` parameter, not just the `hint` argument to std::allocator<T>::allocate. base::Value needs to be a complete type in value_iterators.cc to satisfy a `requires` clause. Bug: 175635923 Test: m libchrome libmojo MODULES-IN-external-libchrome Change-Id: I28408f1f1be3e02e28187e2f8ad6ac4d20a73bd6
-rw-r--r--base/containers/stack_container.h6
-rw-r--r--base/value_iterators.cc2
2 files changed, 5 insertions, 3 deletions
diff --git a/base/containers/stack_container.h b/base/containers/stack_container.h
index c775744305..980da077c1 100644
--- a/base/containers/stack_container.h
+++ b/base/containers/stack_container.h
@@ -35,7 +35,7 @@ namespace base {
template<typename T, size_t stack_capacity>
class StackAllocator : public std::allocator<T> {
public:
- typedef typename std::allocator<T>::pointer pointer;
+ typedef T* pointer;
typedef typename std::allocator<T>::size_type size_type;
// Backing store for the allocator. The container owner is responsible for
@@ -102,13 +102,13 @@ class StackAllocator : public std::allocator<T> {
// Actually do the allocation. Use the stack buffer if nobody has used it yet
// and the size requested fits. Otherwise, fall through to the standard
// allocator.
- pointer allocate(size_type n, void* hint = 0) {
+ pointer allocate(size_type n) {
if (source_ != NULL && !source_->used_stack_buffer_
&& n <= stack_capacity) {
source_->used_stack_buffer_ = true;
return source_->stack_buffer();
} else {
- return std::allocator<T>::allocate(n, hint);
+ return std::allocator<T>::allocate(n);
}
}
diff --git a/base/value_iterators.cc b/base/value_iterators.cc
index ba9c73072f..4765f73fdf 100644
--- a/base/value_iterators.cc
+++ b/base/value_iterators.cc
@@ -4,6 +4,8 @@
#include "base/value_iterators.h"
+#include "base/values.h"
+
namespace base {
namespace detail {