mirror of
https://github.com/darlinghq/darling-libcxx.git
synced 2025-01-26 05:44:26 +00:00
Add bare_allocator archetype that implements the minimal possible allocator interface.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@215691 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f3b5f0e134
commit
31b9c44aa7
@ -10,6 +10,34 @@
|
||||
#ifndef MIN_ALLOCATOR_H
|
||||
#define MIN_ALLOCATOR_H
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
template <class T>
|
||||
class bare_allocator
|
||||
{
|
||||
public:
|
||||
typedef T value_type;
|
||||
|
||||
bare_allocator() {}
|
||||
|
||||
template <class U>
|
||||
bare_allocator(bare_allocator<U>) {}
|
||||
|
||||
T* allocate(std::size_t n)
|
||||
{
|
||||
return static_cast<T*>(::operator new(n*sizeof(T)));
|
||||
}
|
||||
|
||||
void deallocate(T* p, std::size_t)
|
||||
{
|
||||
return ::operator delete(static_cast<void*>(p));
|
||||
}
|
||||
|
||||
friend bool operator==(bare_allocator, bare_allocator) {return true;}
|
||||
friend bool operator!=(bare_allocator x, bare_allocator y) {return !(x == y);}
|
||||
};
|
||||
|
||||
|
||||
#if __cplusplus >= 201103L
|
||||
|
||||
#include <memory>
|
||||
@ -71,7 +99,7 @@ public:
|
||||
explicit min_pointer(min_pointer<void> p) : ptr_(static_cast<T*>(p.ptr_)) {}
|
||||
|
||||
explicit operator bool() const {return ptr_ != nullptr;}
|
||||
|
||||
|
||||
typedef std::ptrdiff_t difference_type;
|
||||
typedef T& reference;
|
||||
typedef T* pointer;
|
||||
|
Loading…
x
Reference in New Issue
Block a user