------- Comment #3 from ylalym at gmail dot com 2009-10-04 15:33 ------- (In reply to comment #0) There is a makeshift.
File a.cpp #include <stdio.h> const class nullptr_t { public: template<class T> operator T*() const { return 0; } template<class C, class T> operator T C::*() const { return 0; } // void (C::*pmf)() = nullptr; // Ok // if (nullptr == pmf) {} // Ok template<class C, class T> bool operator == (C (T::*p)()) const { return p == 0; } private: void operator&() const; // const int n = 0; // if (nullptr == n) {} // Error bool operator == (long) const; } nullptr = {}; struct C { void func(); }; int main(void) { void (C::*pmf)() = nullptr; if (nullptr == pmf) {printf("Ok\n");} // If there are sentences - send !!!!!!!! // if (pmf == nullptr) {printf("Ok\n");} // Error } > g++ a.cpp > ./a.out Ok > -- ylalym at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ylalym at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33990