------- Comment #4 from pluto at agmk dot net 2010-06-27 09:45 ------- current 4.5 rejects all conversions:
$ cat t.cpp 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 extern void* p; struct A { void foo(); }; extern void (A::*pmf)(); int main() { return ( ( p != nullptr ) && ( pmf != nullptr ) ); } $ g++ t.cpp -std=c++0x -c t.cpp: In function 'int main()': t.cpp:22:19: error: no match for 'operator!=' in 'p != nullptr' t.cpp:22:41: error: no match for 'operator!=' in 'pmf != nullptr' -- pluto at agmk dot net changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |pluto at agmk dot net http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33990