double fib(double n)
{
if(n < 0)
throw "Invalid argument passed to fib";
}
else
struct
double operator()(double n)
if(n < 2)
return n;
return (*this)(n-1) + (*this)(n-2);
} actual_fib;
return actual_fib(n);