const class nullptr_t{ public: // 定义类型转换操作符,使nullptr_t 可转为任意非类成员指针类型 template<class T> inline operator T*() const{ return 0; } // 重载类型转换操作符,使 nullptr_t 可以转换为类 C 中任意的指针类型(数据成员指针/函数成员指针) // 对类中数据成员的指针,T 将被推导为数据成员的类型 eg: int (X::*); 此时 T 为 int,C 为 X // 对类中函数成员的指针,T 将被推导为函数成员的类型 eg: int (X::*)(int); 此时T 等效于: typedef int (T)(int) template<class C, class T> inline operator T C::*() const { return 0; } private: void operator&() const; } nullptr = {};