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 = {};