// Testcase for uses of bool. // Build don't link: int i,j,k; /* Check that types of certain expressions are bool. */ void f () { i ? j == k : true; i ? j < k : true; i ? j && k : true; } /* Check that g++ can find a conversion to bool when one exists. */ struct A { operator char * (); } a; struct B { operator int (); } b; struct C { operator float (); } c; struct D { operator bool (); } d; struct E { operator int E::* (); } e; void g () { a || true; b || true; c || true; // gets bogus error d || true; e || true; } /* Check for support in templates. */ template struct F { }; template class F; template void f (T, bool) { }; template void f (bool, bool); /* Special cases. */ void h () { /* Used to cause infinite recursion. */ i&1 || true; /* Should find conversion path to int. */ d == true; } bool boo = -1;