20
Memory management library
[mem]
20.3
Smart pointers
[smartptr]
20.3.1
Unique-ownership pointers
[unique.ptr]
20.3.1.4
unique_
ptr
for array objects with a runtime length
[unique.ptr.runtime]
20.3.1.4.1
General
[unique.ptr.runtime.general]
🔗
namespace
std
{
template
<
class
T,
class
D
>
class
unique_ptr
<
T
[
]
, D
>
{
public
:
using
pointer
=
see below
;
using
element_type
=
T;
using
deleter_type
=
D;
//
[unique.
ptr.
runtime.
ctor]
, constructors
constexpr
unique_ptr
(
)
noexcept
;
template
<
class
U
>
constexpr
explicit
unique_ptr
(
U p
)
noexcept
;
template
<
class
U
>
constexpr
unique_ptr
(
U p,
see below
d
)
noexcept
;
template
<
class
U
>
constexpr
unique_ptr
(
U p,
see below
d
)
noexcept
;
constexpr
unique_ptr
(
unique_ptr
&
&
u
)
noexcept
;
template
<
class
U,
class
E
>
constexpr
unique_ptr
(
unique_ptr
<
U, E
>
&
&
u
)
noexcept
;
constexpr
unique_ptr
(
nullptr_t
)
noexcept
;
// destructor
constexpr
~
unique_ptr
(
)
;
// assignment
constexpr
unique_ptr
&
operator
=
(
unique_ptr
&
&
u
)
noexcept
;
template
<
class
U,
class
E
>
constexpr
unique_ptr
&
operator
=
(
unique_ptr
<
U, E
>
&
&
u
)
noexcept
;
constexpr
unique_ptr
&
operator
=
(
nullptr_t
)
noexcept
;
//
[unique.
ptr.
runtime.
observers]
, observers
constexpr
T
&
operator
[
]
(
size_t i
)
const
;
constexpr
pointer get
(
)
const
noexcept
;
constexpr
deleter_type
&
get_deleter
(
)
noexcept
;
constexpr
const
deleter_type
&
get_deleter
(
)
const
noexcept
;
constexpr
explicit
operator
bool
(
)
const
noexcept
;
//
[unique.
ptr.
runtime.
modifiers]
, modifiers
constexpr
pointer release
(
)
noexcept
;
template
<
class
U
>
constexpr
void
reset
(
U p
)
noexcept
;
constexpr
void
reset
(
nullptr_t
=
nullptr
)
noexcept
;
constexpr
void
swap
(
unique_ptr
&
u
)
noexcept
;
// disable copy from lvalue
unique_ptr
(
const
unique_ptr
&
)
=
delete
; unique_ptr
&
operator
=
(
const
unique_ptr
&
)
=
delete
;
}
;
}
1
#
A specialization for array types is provided with a slightly altered interface
.
(1.1)
Conversions between different types of
unique_
ptr
<
T
[
]
, D
>
that would be disallowed for the corresponding pointer-to-array types, and conversions to or from the non-array forms of
unique_
ptr
, produce an ill-formed program
.
(1.2)
Pointers to types derived from
T
are rejected by the constructors, and by
reset
.
(1.3)
The observers
operator
*
and
operator
-
>
are not provided
.
(1.4)
The indexing observer
operator
[
]
is provided
.
(1.5)
The default deleter will call
delete
[
]
.
2
#
Descriptions are provided below only for members that differ from the primary template
.
3
#
The template argument
T
shall be a complete type
.