void f (int i) { ; }
void f (char* c) { ; }

void g();
void g(int);
void g() { f (3); }

class A {
public:
   void f (int) { ; }
   void f (double x) { ; }
};

template <class T>
struct B {
   void h (T x) { return; }
};


int main() {
   char* c = 0;
   f (c);
   f (1);
   g ();
   A a;
   a.f (1.0);
   B<int> b;
   b.h(1);
   return 0;
}
