#include<iostream>
#include<functional>
using namespace std;

int x = 1;
int f(int y) {
  x = 0;
  return y;
}

int g(int y) {
  return x;
}

int h(function<int()> u) {
  return x;
}

int main() {
  printf("call by name: %d\n", h([](){return f(1);}));
  printf("call by value: %d\n", g(f(1)));
  return 0;
}
