38 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s2 3void f1();4 5struct X {6 void f2();7};8 9struct Y {10 friend void ::f1() { } // expected-error{{friend function definition cannot be qualified with '::'}}11 friend void X::f2() { } // expected-error{{friend function definition cannot be qualified with 'X'}}12};13 14template <typename T> struct Z {15 friend void T::f() {} // expected-error{{friend function definition cannot be qualified with 'T'}}16};17 18void local() {19 void f();20 21 struct Local {22 friend void f() { } // expected-error{{friend function cannot be defined in a local class}}23 };24}25 26template<typename T> void f3(T);27 28namespace N {29 template<typename T> void f4(T);30}31 32template<typename T> struct A {33 friend void f3(T) {}34 friend void f3<T>(T) {} // expected-error{{friend function specialization cannot be defined}}35 friend void N::f4(T) {} // expected-error{{friend function definition cannot be qualified with 'N'}}36 friend void N::f4<T>(T) {} // expected-error{{friend function definition cannot be qualified with 'N'}}37};38