##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# nullptr, the pointer literal

From cppreference.com
< cpp‎ | language

### [edit] Syntax

`nullptr` |  | (since C++11)

### [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] Example

Demonstrates how nullptr allows forwarding via a template function.

Run this code

    #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

### [edit] Keywords

`nullptr`

### [edit] See also

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

### [edit] References

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

  - 4.10 Pointer conversions [conv.ptr]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/language/nullptr&oldid=87869"