NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
deleter.hpp
浏览该文件的文档.
1#ifndef NEFORCE_CORE_UTILITY_DELETER_HPP__
2#define NEFORCE_CORE_UTILITY_DELETER_HPP__
3
11
13NEFORCE_BEGIN_NAMESPACE__
14
20
28template <typename T>
30 constexpr default_delete() noexcept = default;
31
36 template <typename U, enable_if_t<is_convertible<U*, T*>::value, int> = 0>
37 NEFORCE_CONSTEXPR20 default_delete(const default_delete<U>&) noexcept {}
38
43 NEFORCE_CONSTEXPR20 void operator()(const T* ptr) const noexcept { delete ptr; }
44
50 template <typename U>
51 NEFORCE_CONSTEXPR20 default_delete<U> rebind() && noexcept {
52 return default_delete<U>();
53 }
54};
55
60template <typename T>
61struct default_delete<T[]> {
62 constexpr default_delete() noexcept = default;
63
68 template <typename U, enable_if_t<is_convertible<U (*)[], T (*)[]>::value, int> = 0>
69 NEFORCE_CONSTEXPR20 default_delete(const default_delete<U[]>&) noexcept {}
70
76 template <typename U, enable_if_t<is_convertible<U (*)[], T (*)[]>::value, int> = 0>
77 NEFORCE_CONSTEXPR20 void operator()(U* ptr) const noexcept {
78 delete[] ptr;
79 }
80
86 template <typename U>
87 NEFORCE_CONSTEXPR20 default_delete<U[]> rebind() && noexcept {
88 return default_delete<U[]>();
89 }
90};
91 // Deleter
93
94NEFORCE_END_NAMESPACE__
95#endif // NEFORCE_CORE_UTILITY_DELETER_HPP__
typename enable_if< Test, T >::type enable_if_t
enable_if的便捷别名
NEFORCE_CONSTEXPR20 void operator()(U *ptr) const noexcept
删除操作符
NEFORCE_CONSTEXPR20 default_delete< U[]> rebind() &&noexcept
重新绑定到其他数组类型的删除器
constexpr default_delete() noexcept=default
默认构造函数
NEFORCE_CONSTEXPR20 default_delete< U > rebind() &&noexcept
重新绑定到其他类型的删除器
constexpr default_delete() noexcept=default
默认构造函数
NEFORCE_CONSTEXPR20 void operator()(const T *ptr) const noexcept
删除操作符
判断类型From是否可以隐式转换为类型To
类型萃取