fork download
  1. #include <iostream>
  2.  
  3. template<typename F> unsigned fact(int i, F&& f) {
  4. if(i == 0)
  5. return 1;
  6. return i * f(i - 1);
  7. }
  8. struct fact_doubler {
  9. unsigned operator()(unsigned i) {
  10. return 2 * fact(i, *this);
  11. }
  12. };
  13. int main() {
  14. fact_doubler f;
  15. std::cout << f(5);
  16. }
Success #stdin #stdout 0s 2884KB
stdin
Standard input is empty
stdout
7680