// RUN: %clang_cc1 -fsyntax-only -verify %s
// expected-no-diagnostics

namespace N1 {
  struct X { };
  int& f(void*);
}

namespace N2 {
  template<typename T> struct Y { };
}

namespace N3 {
  void test() {
    int &ir = f((N2::Y<N1::X>*)0);
  }
}

int g(void *);
long g(N1::X);

namespace N1 {
  void h(int (*)(void *));
}

void test() {
  h((&g));
}