brintos

brintos / llvm-project-archived public Read only

0
0
Text · 647 B · 4ee03c6 Raw
27 lines · cpp
1// RUN: %clang_cc1 -std=c++17 -verify -emit-llvm-only %s2 3template <class T> void bar(const T &t) { foo(t); }4 5template <class>6struct HasFriend {7  template <class T>8  friend void foo(const HasFriend<T> &m) noexcept(false);9};10 11template <class T>12void foo(const HasFriend<T> &m) noexcept(false) {}13 14void f() {15  HasFriend<int> x;16  foo(x);17  bar(x);18}19 20template<typename T> void droid();21struct X {22  template<typename T> friend void ::droid();23  template<int N> friend void ::droid(); // expected-error {{does not match}}24  // FIXME: We should produce a note for the above candidate explaining why25  // it's not the droid we're looking for.26};27