// { dg-do compile } // Origin: Wolfgang Bangerth <bangerth@ticam.utexas.edu> // PR 9030. Perform access checking to parameter and return type of // function template correctly when the template is friend. template <class T> class Outer { private: struct Inner {}; template <class T_> friend typename Outer<T_>::Inner foo (); }; template <class T> typename Outer<T>::Inner foo () { return typename Outer<T>::Inner(); } void f() { foo<int>(); }