view gcc/testsuite/g++.old-deja/g++.bugs/900215_01.C @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
line wrap: on
line source

// { dg-do assemble  }
// g++ 1.36.1 bug 900215_01

// g++ allows the definition of a type conversion operator `operator void'
// for class types, but subsequently fails to generate calls (where needed)
// for such type conversion operators.

// Cfront 2.0 does generate such calls.

// The following program exits with status 0 when compiled with Cfront 2.0
// but exits with status 1 when compiled with g++.

// Cfront 2.0 passes this test.

// 4/27/94 (jason): The pre-San Diego working paper prohibits operator
// void, so we can go back to just ignoring void values.

// keywords: user-defined type conversion operators, void type, explicit casts

// 8/3/2000 (nathan): The std allows you to define such an op, but
// it will never be called. [class.conv.fct]. Make it an unconditional warning.

// { dg-options "-Wconversion" }

struct struct0 {

  operator void ();		// { dg-warning "" } operator void
};

int exit_status = 1;

struct0::operator void ()
{
  exit_status = 0;
}

struct struct0 s0_object;

int test ()
{
  (void) s0_object;
  return exit_status;
}

int main () { return test (); }