aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.bugs/900207_03.C
blob: 187c070acb8ce76a3c5e7d6f004cc53660c3105b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// 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; }