[unique.ptr.dltr.dflt]

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

## 20.3 Smart pointers [[smartptr]](smartptr#unique.ptr.dltr.dflt)

### 20.3.1 Unique-ownership pointers [[unique.ptr]](unique.ptr#dltr.dflt)

#### 20.3.1.2 Default deleters [[unique.ptr.dltr]](unique.ptr.dltr#dflt)

#### 20.3.1.2.2 default_delete [unique.ptr.dltr.dflt]

namespace std {template<class T> struct default_delete {constexpr default_delete() noexcept = default; template<class U> constexpr default_delete(const default_delete<U>&) noexcept; constexpr void operator()(T*) const; };}

[ð](#lib:default_delete,constructor)

`template<class U> constexpr default_delete(const default_delete<U>& other) noexcept;
`

[1](#1)

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

*Constraints*: U* is implicitly convertible to T*[.](#1.sentence-1)

[2](#2)

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

*Effects*: Constructs a default_delete object
from another default_delete<U> object[.](#2.sentence-1)

[ð](#lib:operator(),default_delete)

`constexpr void operator()(T* ptr) const;
`

[3](#3)

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

*Mandates*: T is a complete type[.](#3.sentence-1)

[4](#4)

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

*Effects*: Calls delete on ptr[.](#4.sentence-1)
