[gnu.g++.bug] Member initialization via member initialization list vs. statement in constructor body

franke@dvscotty.cad.mcc.com (David Franke) (08/07/89)

g++ version 1.35.1- compiles the following without incident:

    class class1 {
     public:
      int var1;
    };

    class class2 : public class1 {
     public:
      class2 ( int val ) { var1 = val; }
    };

    class class3 : public class1 {
     public:
      class3 ( int val ) { var1 = val+1; }
    };

but reports:

In method struct class3 *class3::class3 (int):
testb1.c:14: multiple initializations given for member `var1'

on the following source:

    class class1 {
     public:
      int var1;
    };

    class class2 : public class1 {
     public:
      class2 ( int val ) : var1(val) {}
    };

    class class3 : public class1 {
     public:
      class3 ( int val ) : var1(val+1) {}
    };

Aren't these equivalent?  Lippman, Section 6.1 (p. 242-243) 
leads me to believe they are.
 David Franke, MCC CAD Program | ARPA: franke@mcc.com | Phone: [512] 338-3641
 UUCP: {uunet,harvard,gatech,pyramid}!cs.utexas.edu!milano!cadillac!franke