900207_03.C   [plain text]


// g++ 1.36.1 bug 900207_03

// g++ fails to allow objects of class or struct types to be initialized
// using "constructor syntax" in cases where an implicitly generated copy
// constructor would be invoked for the initialization, and where there is
// no explicitly specified constructor associated with the type of the
// object being initialized.

// Note that the type of the error changes depending upon whether or not the
// type being initialized has any virtual functions associated with it.

// Cfront 2.0 passes this test.

// keywords: implicit copy constructor, initialization


// Check construction for a type without virtual function members.

struct struct0 {
  int data_member;
};

struct0 struct0_gbl_object0;
struct0 struct0_gbl_object1 (struct0_gbl_object0);	// gets bogus error

void struct0_test ()
{
  struct0 struct0_lcl_object1 (struct0_gbl_object0);	// gets bogus error
}

// Check construction for a type with virtual function members.

struct struct1 {
  int data_member;

  virtual void function_member ();
};

void struct1::function_member () { }

struct1 struct1_gbl_object0;
struct1 struct1_gbl_object1 (struct1_gbl_object0);	// gets bogus error

void struct1_test ()
{
  struct1 struct1_lcl_object1 (struct1_gbl_object0);	// gets bogus error
}

int main () { return 0; }