The program below works for the Solaris and Microsoft compilers, but not for
the GCC compiler. Can anybody else verify this, and or if it's already been
fixed?  
 
I'm using:
-bash-3.00$ gcc -v
Reading specs from /usr/lib/gcc/i386-redhat-linux/3.4.6/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--disable-checking --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-java-awt=gtk
--host=i386-redhat-linux
Thread model: posix
gcc version 3.4.6 20060404 (Red Hat 3.4.6-3)
 
#include "stdio.h"
 
struct S
{
      S()            {  printf( "Inside default constructor \n" );  }
      S( const S & ) {  printf( "Inside copy constructor \n" );  }
};
 
S  f( void ) 
{
      S s1;
      return s1; 
}
 
int main ( int, char ** )
{
      S  s1;
      S  s2( s1 );  // must call the copy constructor
      S  s3 = f();  // must call the copy constructor
      S  s4( f() ); // must call the copy constructor
      return 0;
}
 
#if 0
      //  GCC output is:
      Inside default constructor 
      Inside copy constructor 
      Inside default constructor 
      Inside default constructor 
 
      //  Both Solaris and Microsoft output is:
      Inside default constructor 
      Inside copy constructor 
      Inside default constructor 
      Inside copy constructor 
      Inside default constructor 
      Inside copy constructor 
#endif


Reply via email to