1 diff -cprN gcc-33-save/gcc/cp/search.c gcc-33-new/gcc/cp/search.c
2 *** gcc-33-save/gcc/cp/search.c Thu May 22 19:19:30 2003
3 --- gcc-33-new/gcc/cp/search.c Sat May 24 19:03:32 2003
4 *************** type_access_control (type, val)
8 || (TREE_CODE (val) != TEMPLATE_DECL && TREE_CODE (val) != TYPE_DECL)
9 ! || ! DECL_CLASS_SCOPE_P (val))
12 if (type_lookups == error_mark_node)
16 || (TREE_CODE (val) != TEMPLATE_DECL && TREE_CODE (val) != TYPE_DECL)
17 ! || ! DECL_CLASS_SCOPE_P (val)
18 ! || processing_specialization)
21 if (type_lookups == error_mark_node)
22 diff -cprN gcc-33-save/gcc/testsuite/g++.dg/template/access10.C gcc-33-new/gcc/testsuite/g++.dg/template/access10.C
23 *** gcc-33-save/gcc/testsuite/g++.dg/template/access10.C Thu Jan 1 07:00:00 1970
24 --- gcc-33-new/gcc/testsuite/g++.dg/template/access10.C Sat May 24 23:26:59 2003
28 + // { dg-do compile }
30 + // Origin: Giovanni Bajo <giovannibajo@libero.it>
32 + // PR c++/10849: Incorrect access checking on template specialization.
36 + template <typename T> struct Y;
39 + template <> struct X::Y<int> {};
41 + template <typename T> struct X::Y {};
43 + template struct X::Y<int>;