nullptr, the pointer literal (since C++11)
 
 
 From cppreference.com
 
 
 
 
 
 C++ 
 Feature test macros (C++20)
 Concepts library (C++20)
 Metaprogramming library (C++11)
 Ranges library (C++20)
 Filesystem library (C++17)
 Concurrency support library (C++11)
 Execution control library (C++26)
C++ language 
 
  
  
 General topics
 Conditional execution statements
 Iteration statements (loops)
 Jump statements
 Dynamic exception specifications (until C++17*)
noexcept specifier (C++11) Exceptions
 Namespaces
 Types
 Specifiers
 User-defined (C++11)
 Utilities
 Attributes (C++11)
 Types
 Type alias declaration (C++11)
 Casts
 Memory allocation
 Class-specific function properties
 Special member functions
 Miscellaneous
 Expressions 
  
  
 
 
 General
 Literals
 Operators
 Conversions
[edit] Syntax
nullptr
 
 
[edit] Explanation
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 .
[edit] Keywords
[edit] 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<class T> constexpr T clone(const T& t) { return t; } void g(int*) { std::cout << "Function g called\n"; } int main() { g(nullptr); // Fine g(NULL ); // Fine g(0); // Fine g(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
[edit] 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]
 
[edit] See also
C documentation  for nullptr