fork(2) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template <typename Fnc, typename Args>
  5. void t (Fnc f, Args arg) {
  6. f (arg);
  7. }
  8.  
  9. void foo (int x) {
  10. cout<<x;
  11. }
  12. void bar (int& x) {
  13. cout << ++x;
  14. }
  15.  
  16. template <typename T>
  17. struct refholder {
  18. T *ptr;
  19. refholder(T& x):ptr(&x){}
  20. operator T& () { return *ptr; }
  21. };
  22.  
  23. template <typename T>
  24. refholder<T> makeref (T& x) {
  25. return refholder<T>(x);
  26. }
  27.  
  28. int main () {
  29. int x=2;
  30. t (foo, x);
  31. t (bar, makeref(x));
  32. cout << x;
  33. }
  34.  
Success #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
233