std::default_delete
is the default destruction policy used by
std::
unique_ptr
when no deleter is specified.
1) The non-specialized
default_delete
uses
delete
to deallocate memory for a single object.
2) A partial specialization for array types that uses
delete
[
]
is also provided.
Contents
1
Member functions
2
std::default_delete::default_delete
2.1
Parameters
2.2
Exceptions
3
std::default_delete::operator()
3.1
Parameters
3.2
Exceptions
3.3
Example
3.4
See also
1)
Constructs a
std::default_delete
object.
2)
Constructs a
std::default_delete
object from another
std::default_delete
object. This constructor will only participate in overload resolution if
U*
is implicitly convertible to
T*
.
Parameters
// {
// std::shared_ptr<int> shared_bad(new int[10]);
// } // the destructor calls delete, undefined behavior
std::
shared_ptr
<
int
>
shared_good
(
new
int
[
10
]
, std
::
default_delete
<
int
[
]
>
(
)
)
;
}
// the destructor calls delete[], ok
std::
unique_ptr
<
int
>
ptr
(
new
int
(
5
)
)
;
}
// unique_ptr<int> uses default_delete<int>
std::
unique_ptr
<
int
[
]
>
ptr
(
new
int
[
10
]
)
;
}
// unique_ptr<int[]> uses default_delete<int[]>
// default_delete can be used anywhere a delete functor is needed
std::
vector
<
int
*
>
v
;
for
(
int
n
=
0
;
n
<
100
;
++
n
)
v.
push_back
(
new
int
(
n
)
)
;
std::
for_each
(
v.
begin
(
)
, v.
end
(
)
, std
::
default_delete
<
int
>
(
)
)
;