1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
// { dg-do compile } // Perform access checking to parameter and return type of // function template correctly when only specialization is friend. template <class T> typename T::Inner foo () { return typename T::Inner(); } class Outer { private: struct Inner {}; friend Outer::Inner foo<Outer> (); }; void f() { foo<Outer>(); }