pointer literal in C++

C++11 introduces the nullptr literal to specify a zero-initialized pointer. In portable code, nullptr should be used instead of integral-type zero or macros such as NULL. nullptr replaces the bug-prone NULL macro and the literal 0 that have been used as null pointer substitutes for many years. nullptr is strongly-typed:
```
void f(int); //#1
void f(char *);//#2

//C++03
f(0); //which f is called?
//C++11
f(nullptr) //unambiguous, calls #2
```
nullptr is applicable to all pointer categories, including function pointers and pointers to members:
```
const char *pc=str.c_str(); //data pointers
if (pc!=nullptr)
  cout<<pc<<endl;
int (A::*pmf)()=nullptr; //pointer to member function
void (*pmf)()=nullptr; //pointer to function
```