// Special g++ Options:
class A {
public:
  operator bool () {
    return true;
  }
} a;
class A1 {
public:
  operator int () {
    return true;
  }
} a1;
class A2 {
public:
  operator char * () {
    return "";
  }
} a2;
class A3 {
public:
  operator unsigned long long int () {
    return true;
  }
} a3;
class A4 {
public:
  operator char * () {
    return "";
  }
  operator unsigned long long int () {
    return true;
  }
} a4;
class A5 {
public:
  operator double () {
    return 256.0e0*256.0e0*256.0e0*256.0e0*256.0e0*256.0e0*256.0e0*256.0e0
      *256.0e0*256.0e0*256.0e0*256.0e0*256.0e0*256.0e0*256.0e0*256.0e0
	*256.0e0*256.0e0*256.0e0*256.0e0*256.0e0*256.0e0*256.0e0*256.0e0
	  *256.0e0*256.0e0*256.0e0*256.0e0*256.0e0*256.0e0*256.0e0*256.0e0;
  }
} a5;
int i = true;
bool b = true;
bool c = (bool)(void (A::*)())0;
bool d = 256;
main() {
  if (!d) return 1;
  if (!a) return 1;
  if (!(bool)a) return 1;
  //  if (!(long long)a) return 1;
  if (!a1) return 1;
  if (!a2) return 1;
  if (!a3) return 1;
  if (!a5) return 1;
}
