nullptr, the pointer literal (since C++11)

From cppreference.com

Syntax

nullptrExplanation

The keyword nullptr denotes the pointer literal. It is a

prvalue

of type

std::nullptr_t

. There exist

implicit conversions

from nullptr to null pointer value of any pointer type and any pointer to member type. Similar conversions exist for any null pointer constant, which includes values of type

std::nullptr_t

as well as the macro

NULL

.

Keywords

nullptr

Example

Demonstrates that nullptr retains the meaning of null pointer constant even if it is no longer a literal.

Run this code

#include<cstddef>#include<iostream>template<classT>constexprTclone(constT&t){returnt;}voidg(int*){std::cout<<"Function g called\n";}intmain(){g(nullptr);// Fineg(NULL);// Fineg(0);// Fineg(clone(nullptr));// Fine// g(clone(NULL)); // ERROR: non-literal zero cannot be a null pointer constant// g(clone(0)); // ERROR: non-literal zero cannot be a null pointer constant}Output:

Function g called Function g called Function g called Function g called References

C++23 standard (ISO/IEC 14882:2024):

7.3.12 Pointer conversions [conv.ptr]

C++20 standard (ISO/IEC 14882:2020):

7.3.12 Pointer conversions [conv.ptr]

C++17 standard (ISO/IEC 14882:2017):

7.11 Pointer conversions [conv.ptr]

C++14 standard (ISO/IEC 14882:2014):

4.10 Pointer conversions [conv.ptr]

C++11 standard (ISO/IEC 14882:2011):

4.10 Pointer conversions [conv.ptr]

See also