#include <cassert>

int global;

// these are in fact the same
void f(const int i)
{
  global = 10;
}

void f(int i);

// the following two are *different*!
void g(int *p)
{
  global = 20;
}

void g(const int *p)
{
  global = 30;
}

int main()
{
  f(0);
  assert(global == 10);

  g((int *)0);
  assert(global == 20);

  g((const int *)0);
  assert(global == 30);
}
