[unique.ptr.runtime.modifiers]

# 20 Memory management library [[mem]](./#mem)

## 20.3 Smart pointers [[smartptr]](smartptr#unique.ptr.runtime.modifiers)

### 20.3.1 Unique-ownership pointers [[unique.ptr]](unique.ptr#runtime.modifiers)

#### 20.3.1.4 unique_ptr for array objects with a runtime length [[unique.ptr.runtime]](unique.ptr.runtime#modifiers)

#### 20.3.1.4.5 Modifiers [unique.ptr.runtime.modifiers]

[ð](#lib:reset,unique_ptr)

`constexpr void reset(nullptr_t p = nullptr) noexcept;
`

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/memory.tex#L3105)

*Effects*: Equivalent to reset(pointer())[.](#1.sentence-1)

[ð](#lib:reset,unique_ptr_)

`template<class U> constexpr void reset(U p) noexcept;
`

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/memory.tex#L3116)

This function behaves the same as
the reset member of the primary template[.](#2.sentence-1)

[3](#3)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/memory.tex#L3120)

*Constraints*: 

- [(3.1)](#3.1)

U is the same type as pointer, or

- [(3.2)](#3.2)

pointer is the same type as element_type*, U is a pointer type V*, and V(*)[] is convertible to element_type(*)[][.](#3.sentence-1)
