nullptr
-
Der kommende C++-Standard C++09 soll die typsichere Konstante "nullptr" enthalten, die die leidige Problematik mit NULL beheben soll.
Siehe im Artikel C++09 (Teil 1) - Ein Überblick: Sprachfeatures (ganz unten), das dort verlinkte Proposal oder eine von vielen Diskussionen "NULL oder 0".
Das Problem in Kürze:
void foo( int some_value ); void foo( int* some_pointer ); foo( 0 ); // ruft foo(int) auf foo( NULL ); // ruft leider auch foo(int) auf // Wir brauchen sowas: foo( nullptr ); // ruft foo(int*) auf
Der im Proposal vorgestellte, typsichere Null-Zeiger für den derzeitigen Stand sieht so aus:
const // this is a const object... class { public: template<class T> // convertible to any type operator T*() const // of null non-member { return 0; } // pointer... template<class C, class T> // or any type of null operator T C::*() const // member pointer... { return 0; } private: void operator&() const; // whose address can't be taken } nullptr = {}; // and whose name is nullptr
oder auch, um Zeilen und Zeichen zu sparen:
const class { public: template<class T> operator T*() const {return 0;} template<class C, class T> operator T C::*() const {return 0;} private: void operator&() const; } nullptr = {};