1// { dg-do assemble  }
2// g++ 1.36.1 bug 900215_01
3
4// g++ allows the definition of a type conversion operator `operator void'
5// for class types, but subsequently fails to generate calls (where needed)
6// for such type conversion operators.
7
8// Cfront 2.0 does generate such calls.
9
10// The following program exits with status 0 when compiled with Cfront 2.0
11// but exits with status 1 when compiled with g++.
12
13// Cfront 2.0 passes this test.
14
15// 4/27/94 (jason): The pre-San Diego working paper prohibits operator
16// void, so we can go back to just ignoring void values.
17
18// keywords: user-defined type conversion operators, void type, explicit casts
19
20// 8/3/2000 (nathan): The std allows you to define such an op, but
21// it will never be called. [class.conv.fct]. Make it an unconditional warning.
22
23// { dg-options "-Wconversion" }
24
25struct struct0 {
26
27  operator void ();		// { dg-warning "" } operator void
28};
29
30int exit_status = 1;
31
32struct0::operator void ()
33{
34  exit_status = 0;
35}
36
37struct struct0 s0_object;
38
39int test ()
40{
41  (void) s0_object;
42  return exit_status;
43}
44
45int main () { return test (); }
46