xref: /aosp_15_r20/external/clang/test/CXX/class.access/class.friend/p6.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s
2*67e74705SXin Li 
3*67e74705SXin Li void f1();
4*67e74705SXin Li 
5*67e74705SXin Li struct X {
6*67e74705SXin Li   void f2();
7*67e74705SXin Li };
8*67e74705SXin Li 
9*67e74705SXin Li struct Y {
f1()10*67e74705SXin Li   friend void ::f1() { } // expected-error{{friend function definition cannot be qualified with '::'}}
f2Y11*67e74705SXin Li   friend void X::f2() { } // expected-error{{friend function definition cannot be qualified with 'X::'}}
12*67e74705SXin Li };
13*67e74705SXin Li 
14*67e74705SXin Li template <typename T> struct Z {
fZ15*67e74705SXin Li   friend void T::f() {} // expected-error{{friend function definition cannot be qualified with 'T::'}}
16*67e74705SXin Li };
17*67e74705SXin Li 
local()18*67e74705SXin Li void local() {
19*67e74705SXin Li   void f();
20*67e74705SXin Li 
21*67e74705SXin Li   struct Local {
22*67e74705SXin Li     friend void f() { } // expected-error{{friend function cannot be defined in a local class}}
23*67e74705SXin Li   };
24*67e74705SXin Li }
25