Namespaces
Variants
Actions

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

From cppreference.com
< cpp‎ | language
 
 
C++ language
General topics
Conditional execution statements
Iteration statements (loops)
Jump statements
Exceptions
Namespaces
Types
Specifiers
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
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

nullptr

[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

implementation-defined null pointer constant
(macro constant) [edit]
(C++11)
the type of the null pointer literal nullptr
(typedef) [edit]
C documentation for nullptr
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/language/nullptr&oldid=174687"

AltStyle によって変換されたページ (->オリジナル) /