1#ifndef NEFORCE_CORE_MEMORY_ALLOCATED_PTR_HPP__
2#define NEFORCE_CORE_MEMORY_ALLOCATED_PTR_HPP__
12NEFORCE_BEGIN_NAMESPACE__
27template <
typename Alloc>
29 using pointer =
typename allocator_traits<Alloc>::pointer;
30 using value_type =
typename allocator_traits<Alloc>::value_type;
57 template <
typename Ptr,
typename = enable_if_t<is_same_v<Ptr, value_type*>>>
76 if (ptr_ !=
nullptr) {
110template <
typename Alloc>
117NEFORCE_END_NAMESPACE__
allocated_ptr< Alloc > allocate_guarded(Alloc &alloc)
分配内存并创建allocated_ptr
NEFORCE_NODISCARD constexpr T * addressof(T &x) noexcept
获取对象的地址
decltype(nullptr) nullptr_t
空指针类型
constexpr decltype(auto) to_address(const Ptr &ptr) noexcept
安全地获取任意指针类型指向的地址
allocated_ptr(allocated_ptr &&guard) noexcept
移动构造函数
typename allocator_traits< Alloc >::value_type value_type
元素类型
allocated_ptr(Alloc &alloc, Ptr ptr)
原始指针转换
typename allocator_traits< Alloc >::pointer pointer
分配器指针类型
allocated_ptr(Alloc &alloc, pointer ptr) noexcept
构造函数
allocated_ptr & operator=(nullptr_t null) noexcept
设置为空指针
static NEFORCE_NODISCARD NEFORCE_CONSTEXPR20 pointer allocate(Alloc &alloc, size_type n)
分配内存
static NEFORCE_CONSTEXPR20 void deallocate(Alloc &alloc, pointer ptr, size_type n)
释放内存