Compiler projects using llvm
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s

namespace redecl_in_templ {
template<typename T> void redecl_in_templ() {
  extern void func_1();  // expected-note  {{previous declaration is here}}
  extern int  func_1();  // expected-error {{functions that differ only in their return type cannot be overloaded}}
}

void g();
constexpr void (*p)() = g;

template<bool> struct X {};
template<> struct X<true> { typedef int type; };

template<typename T> void f() {
  extern void g();
  X<&g == p>::type n;
}
}