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