// { dg-do run } // GROUPS passed operators // Check that operators may be (directly) recursive. extern "C" int printf (const char *, ...); struct base { int i; }; base base_variable; base operator+ (const base& left, const base& right) { base ret_val; ret_val.i = left.i + right.i; return ret_val; } base operator- (const base& left, int right) { base ret_val; ret_val.i = left.i - right; return ret_val; } // Define the unary ! operator for class base to be the fibonachi // operator. base operator! (const base& right) { if (right.i < 2) return right; else return ((!(right-1)) + (!(right-2))); } int main () { base k; k.i = 15; k = !k; // fib it! if (k.i != 610) { printf ("FAIL\n"); return 1; } else printf ("PASS\n"); return 0; }