Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/language/nullptr"

From cppreference.com
< cpp‎ | language
m (Text replace - "{{cpp|" to "{{c|")
m (r2.7.3) (Robot: Adding zh:cpp/language/nullptr)
Line 50: Line 50:
 
{{dcl list template | cpp/types/dcl list nullptr_t}}
 
{{dcl list template | cpp/types/dcl list nullptr_t}}
 
{{dcl list end}}
 
{{dcl list end}}
 +
 +
[[zh:cpp/language/nullptr]]

Revision as of 14:59, 4 May 2012

Template:cpp/language/sidebar

Contents

Syntax

nullptr (since C++11)

Explanation

The keyword nullptr denotes the null pointer literal. It is an unspecified 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 value of type std::nullptr_t as well as for the macro NULL, the null pointer constant.

Example

Demonstrates how nullptr allows forwarding via a template function.

#include <cstddef>
#include <iostream>
 
template<class F, class A>
void Fwd(F f, A a)
{
    f(a);
}
 
void g(int* i)
{
    std::cout << "Function g called\n";
}
 
int main()
{
    g(NULL);           // Fine
    g(0);              // Fine
 
    Fwd(g, nullptr);   // Fine
//  Fwd(g, NULL);  // ERROR: No function g(int)
}

Output:

Function g called
Function g called
Function g called

Keywords

nullptr

See also

implementation-defined null pointer constant
(macro constant) [edit]
(C++11)
the type of the null pointer literal nullptr
(typedef) [edit]