// RUN: %clang_cc1 -std=c++17 -verify -emit-llvm-only %s template void bar(const T &t) { foo(t); } template struct HasFriend { template friend void foo(const HasFriend &m) noexcept(false); }; template void foo(const HasFriend &m) noexcept(false) {} void f() { HasFriend x; foo(x); bar(x); } template void droid(); struct X { template friend void ::droid(); template friend void ::droid(); // expected-error {{does not match}} // FIXME: We should produce a note for the above candidate explaining why // it's not the droid we're looking for. };