C++0x - nullptr

C++0xではヌルポインタを表すキーワードであるnullptrが追加されます。


C++03では、NULLマクロ、0リテラル等でヌルポインタを表現していましたが

NULLマクロと0リテラルは、関数テンプレートで使用すると、テンプレートによってint型に推論されてしまいます。

template <class T>
void foo(T p)
{
}

int* p;
foo(p); // Tはint*型

// ヌルポインタを渡したつもり
foo(0);    // Tはint型
foo(NULL); // Tはint型


C++0xのnullptrキーワードは、T*の0として機能するため、テンプレートでも問題なく使用できます。

int* p = nullptr;

C++0x言語拡張まとめ