Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.old-deja/g++.bugs/900215_01.C @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 84e7813d76e9 |
children |
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 "3:converting .struct0. to .void. will never use a type conversion operator" } }; 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 (); }