[pointer.traits.functions]

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

## 20.2 Memory [[memory]](memory#pointer.traits.functions)

### 20.2.3 Pointer traits [[pointer.traits]](pointer.traits#functions)

#### 20.2.3.3 Member functions [pointer.traits.functions]

[ð](#lib:pointer_to,pointer_traits)

`static pointer pointer_traits::pointer_to(see below r);
static constexpr pointer pointer_traits<T*>::pointer_to(see below r) noexcept;
`

[1](#1)

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

*Mandates*: For the first member function,Ptr​::​pointer_to(r) is well-formed[.](#1.sentence-1)

[2](#2)

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

*Preconditions*: For the first member function,Ptr​::​pointer_to(r) returns a pointer to r through which indirection is valid[.](#2.sentence-1)

[3](#3)

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

*Returns*: The first member function returns Ptr​::​pointer_to(r)[.](#3.sentence-1)

The second member function returns addressof(r)[.](#3.sentence-2)

[4](#4)

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

*Remarks*: If element_type is cv void, the type ofr is unspecified; otherwise, it is element_type&[.](#4.sentence-1)
