int main(int argc,char *argv[]) { int rt, n; int (*to_call)(int n); if(argc != 3) { usage(argv); return 1; } if(strcmp(argv[1],"-i") == 0) { to_call = &it_fibo; } else if(strcmp(argv[1], "-r") == 0) { to_call = &rec_fibo; } else { usage(argv); return 1; } n = atoi(argv[2]); if(n <= 0) { usage(argv); return 1; } printf("%d-th element is %d\n",n,to_call(n)); return 0; }
int apply(int idx, const T& arg) { if (idx == 0) return to_call(arg); throw 1; }
int apply(int idx, const T& arg, Args... args) { if (idx == 0) return to_call(arg); return apply(--idx, args...); }