A *Cpp17NullablePointer* type is a pointer-like type that supports null values.

A type P meets the *Cpp17NullablePointer* requirements if:

Table 37: *Cpp17NullablePointer* requirements [tab:cpp17.nullablepointer]

Expression | Return type | Operational semantics | |

P u(np); | Postconditions: u == nullptr | ||

P u = np; | |||

P(np) | Postconditions: P(np) == nullptr | ||

t = np | P& | Postconditions: t == nullptr | |

a != b | decltype(a != b) models boolean-testable | !(a == b) | |

a == np | a == P() | ||

np == a | |||

a != np | !(a == np) | ||

np != a |