jjc@UUNET.UU.NET (James Clark) (09/05/89)
cfront guarantees that a valid pointer to member is not equal to zero (it adds 1 to the offset); g++ 1.35.1- doesn't: Script started on Tue Sep 5 08:55:32 1989 $ cat test.c #include <stdio.h> struct A { int n; }; main() { auto A::*ptr = &A::n; if (ptr == 0) puts("zero pointer to member"); } $ g++ -g -v test.c g++ version 1.35.1- /usr/local/lib/gcc-cpp -+ -v -undef -D__GNU__ -D__GNUG__ -D__cplusplus -Dsparc -Dsun -Dunix -D__sparc__ -D__sun__ -D__unix__ test.c /tmp/cca04660.cpp GNU CPP version 1.35 /usr/local/lib/gcc-cc1plus /tmp/cca04660.cpp -quiet -dumpbase test.c -noreg -version -G -o /tmp/cca04660.s GNU C++ version 1.35.1- (sparc) compiled by GNU C version 1.35. /usr/local/lib/gcc-as /tmp/cca04660.s -o test.o /usr/local/lib/gcc-ld++ -C /usr/local/lib/crt0+.o test.o -lg++ /usr/local/lib/gcc-gnulib -lg -lc $ a.out zero pointer to member $ script done on Tue Sep 5 08:55:53 1989 James Clark jjc@jclark.uucp