1 // Copyright (C) 2003 Free Software Foundation 2 // Contributed by Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 3 // { dg-do compile } 4 5 // Access checking during explicit instantiation. 6 7 class A { 8 typedef int X; // { dg-message "private" } 9 }; 10 11 class X { 12 private: 13 template <typename T> struct Y; 14 }; 15 16 template <> struct X::Y<int> { 17 A::X x; // { dg-error "this context" } 18 }; 19 20 template <typename T> struct X::Y { 21 typename T::X x; // { dg-error "this context" } 22 }; 23 24 template struct X::Y<A>; // { dg-message "required from here" } 25