1 // { dg-do compile }
2 
3 // Origin: Wolfgang Bangerth <bangerth@ticam.utexas.edu>
4 
5 // PR c++/9453
6 // Access checking when template friend is defined in class.
7 
8 template <typename> class X {
9   private:
10     struct Inner;
11 
12     template <typename R>
foo(X<R> *)13     friend typename X<R>::Inner * foo (X<R>*) { return 0; }
14 };
15 template class X<void>;
16 X<void>* p;
17 
18 struct U {
barU19   void bar () { foo (p); }
20 };
21