class { public: template // convertible to any type operator T*() const // of null non-member pointer... { return 0; } template // 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