# nullptr, the pointer literal

From cppreference.com
< cpp‎ | language

### Syntax

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

### 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.

### 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

### Keywords

`nullptr`

### See also

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

### References

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

  - 4.10 Pointer conversions [conv.ptr]

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