MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
allocated_ptr.hpp
浏览该文件的文档.
1#ifndef MSTL_CORE_MEMORY_ALLOCATED_PTR_HPP__
2#define MSTL_CORE_MEMORY_ALLOCATED_PTR_HPP__
3
10
13
19
27template <typename Alloc>
29 using pointer = typename allocator_traits<Alloc>::pointer;
30 using value_type = typename allocator_traits<Alloc>::value_type;
31
32private:
33 Alloc* alloc_;
34 pointer ptr_;
35
36public:
45 allocated_ptr(Alloc& alloc, pointer ptr) noexcept
46 : alloc_(_MSTL addressof(alloc)), ptr_(ptr) {}
47
56 template <typename Ptr, typename = enable_if_t<is_same_v<Ptr, value_type*>>>
57 allocated_ptr(Alloc& alloc, Ptr ptr)
58 : alloc_(_MSTL addressof(alloc)), ptr_(pointer_traits<pointer>::pointer_to(*ptr)) {}
59
64 allocated_ptr(allocated_ptr&& guard) noexcept
65 : alloc_(guard.alloc_), ptr_(guard.ptr_) {
66 guard.ptr_ = nullptr;
67 }
68
73 if (ptr_ != nullptr) {
75 }
76 }
77
86 ptr_ = nullptr;
87 return *this;
88 }
89
97 return _MSTL to_address(ptr_);
98 }
99};
100
109template <typename Alloc>
113 // AllocatedPtr
115
117#endif // MSTL_CORE_MEMORY_ALLOCATED_PTR_HPP__
MSTL分配器特性
allocated_ptr< Alloc > allocate_guarded(Alloc &alloc)
分配内存并创建allocated_ptr
MSTL_NODISCARD constexpr T * addressof(T &x) noexcept
获取对象的地址
decltype(nullptr) nullptr_t
空指针类型
#define _MSTL
全局命名空间MSTL前缀
#define MSTL_END_NAMESPACE__
结束全局命名空间MSTL
#define MSTL_BEGIN_NAMESPACE__
开始全局命名空间MSTL
constexpr T * to_address(T *ptr) noexcept
安全地获取原始指针指向的地址
分配内存指针
value_type * get()
获取原始指针
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()
析构函数
allocated_ptr & operator=(nullptr_t null) noexcept
设置为空指针
static MSTL_NODISCARD MSTL_CONSTEXPR20 pointer allocate(Alloc &alloc, size_type n)
分配内存
static MSTL_CONSTEXPR20 void deallocate(Alloc &alloc, pointer ptr, size_type n)
释放内存
指针特性主模板