// Addr of function from multiple namespaces namespace X { void Foo (int); void Foo (short); } namespace Y { void Foo (float); void Foo (double); } template void Foo (T *); using namespace X; using namespace Y; void (*(Baz ())) (float) { return Foo; } void (*(Bar ())) (void *) { return Foo; }