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
12
#include "
NeForce/core/typeinfo/type_traits.hpp
"
13
NEFORCE_BEGIN_NAMESPACE__
14
20
28
template
<
typename
T>
29
struct
default_deleter
{
30
constexpr
default_deleter
() noexcept = default;
31
36
template <typename U,
enable_if_t
<
is_convertible
<U*, T*>::value,
int
> = 0>
37
NEFORCE_CONSTEXPR20
default_deleter
(const
default_deleter
<U>&
/*unused*/
) noexcept {}
38
43
NEFORCE_CONSTEXPR20
void
operator()
(
const
T* ptr)
const
noexcept
{
delete
ptr; }
44
50
template
<
typename
U>
51
NEFORCE_CONSTEXPR20
default_deleter<U>
rebind
() &&
noexcept
{
52
return
default_deleter<U>
();
53
}
54
};
55
60
template
<
typename
T>
61
struct
default_deleter
<T[]> {
62
constexpr
default_deleter
() noexcept = default;
63
68
template <typename U,
enable_if_t
<
is_convertible
<U (*)[], T (*)[]>::value,
int
> = 0>
69
NEFORCE_CONSTEXPR20
default_deleter
(const
default_deleter
<U[]>&
/*unused*/
) 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_deleter<U[]>
rebind
() &&
noexcept
{
88
return
default_deleter<U[]>
();
89
}
90
};
91
// Deleter
93
94
NEFORCE_END_NAMESPACE__
95
#endif
// NEFORCE_CORE_UTILITY_DELETER_HPP__
enable_if_t
typename enable_if< Test, T >::type enable_if_t
enable_if的便捷别名
定义
type_traits.hpp:118
default_deleter< T[]>::default_deleter
constexpr default_deleter() noexcept=default
默认构造函数
default_deleter< T[]>::operator()
constexpr void operator()(U *ptr) const noexcept
删除操作符
定义
deleter.hpp:77
default_deleter< T[]>::rebind
constexpr default_deleter< U[]> rebind() &&noexcept
重新绑定到其他数组类型的删除器
定义
deleter.hpp:87
default_deleter::operator()
constexpr void operator()(const T *ptr) const noexcept
删除操作符
定义
deleter.hpp:43
default_deleter::rebind
constexpr default_deleter< U > rebind() &&noexcept
重新绑定到其他类型的删除器
定义
deleter.hpp:51
default_deleter::default_deleter
constexpr default_deleter() noexcept=default
默认构造函数
is_convertible
判断类型From是否可以隐式转换为类型To
定义
type_traits.hpp:3144
type_traits.hpp
类型萃取
include
NeForce
core
utility
deleter.hpp
制作者
1.16.0