---
name: "std::pointer_traits"
section: "3cxx"
platform: "linux"
package: "libstdc++-12-doc"
version: "12.4.0-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/std::pointer_traits/3cxx"
---

# std::pointer\_traits(3cxx)

Uniform interface to all pointer-like types.

## NAME

std::pointer\_traits\< \_Ptr \> - Uniform interface to all pointer-like types.

## SYNOPSIS

`#include <memory>`

Inherits std::\_\_ptr\_traits\_impl\< \_Ptr, \_Elt \>.

### Public Types

**using** **difference\_type** = **\_\_detected\_or\_t**\< ptrdiff\_t, \_\_diff\_t, \_Ptr \>\
 The type used to represent the difference between two pointers.  **using** **element\_type** = **\_Elt**\
 The type pointed to.  **using** **pointer** = \_Ptr\
 The pointer type.  template\<**typename** \_Up \> **using** **rebind** = **typename** **\_\_detected\_or\_t**\< **\_\_replace\_first\_arg**\< \_Ptr, \_Up \>, **\_\_rebind**, \_Ptr, \_Up \>::type\
 A pointer to a different type.

### Static Public Member Functions

**static** pointer **pointer\_to** (**element\_type** &\_\_r)\
 Obtain a pointer to an object.

## Detailed Description

### template\<typename \_Ptr\>

struct std::pointer\_traits\< \_Ptr \>"Uniform interface to all pointer-like types.

**Since**

C++11

## Member Typedef Documentation

### template\<typename \_Ptr , typename \_Elt \> using std::\_\_ptr\_traits\_impl\< \_Ptr, \_Elt \>::difference\_type = \_\_detected\_or\_t\<ptrdiff\_t, \_\_diff\_t, \_Ptr\>` [inherited]`

The type used to represent the difference between two pointers.

### template\<typename \_Ptr , typename \_Elt \> using std::\_\_ptr\_traits\_impl\< \_Ptr, \_Elt \>::element\_type = \_Elt` [inherited]`

The type pointed to.

### template\<typename \_Ptr , typename \_Elt \> using std::\_\_ptr\_traits\_impl\< \_Ptr, \_Elt \>::pointer = \_Ptr` [inherited]`

The pointer type.

### template\<typename \_Ptr , typename \_Elt \> template\<typename \_Up \> using std::\_\_ptr\_traits\_impl\< \_Ptr, \_Elt \>::rebind = typename \_\_detected\_or\_t\<\_\_replace\_first\_arg\<\_Ptr, \_Up\>, \_\_rebind, \_Ptr, \_Up\>::type` [inherited]`

A pointer to a different type.

## Member Function Documentation

### template\<typename \_Ptr , typename \_Elt , bool = is\_void\<\_Elt\>::value\> static pointer std::\_\_ptr\_traits\_ptr\_to\< \_Ptr, \_Elt, bool \>::pointer\_to (element\_type & \_\_r)` [inline]`, ` [static]`, ` [inherited]`

Obtain a pointer to an object.

**Parameters**

*\_\_r* A reference to an object of type `element_type`

**Returns**

`pointer::pointer_to(__r)`

**Precondition**

`pointer::pointer_to(__r)` is a valid expression.

## Author

Generated automatically by Doxygen for libstdc++ from the source code.
