// { dg-do compile } // Origin: Giovanni Bajo // PR c++/13495: Nested class as template friend. template class A{ public: class B { void func1(void); void func2(void); }; }; template class F1 { friend class A::B; enum { foo = 0 }; // { dg-error "private" } }; template class F2 { template friend class A::B; enum { foo = 0 }; }; template void A::B::func1(void) { (void)F1::foo; (void)F2::foo; } template void A::B::func2(void) { (void)F1::foo; // { dg-error "context" } (void)F2::foo; } template class A; // { dg-message "instantiated" }