pt.c (check_explicit_specialization): Copy TREE_PRIVATE and TREE_PROTECTED from the template being specialized.
* pt.c (check_explicit_specialization): Copy TREE_PRIVATE and TREE_PROTECTED from the template being specialized. From-SVN: r39813
This commit is contained in:
parent
a714e5c5d3
commit
c750255cac
@ -1,3 +1,8 @@
|
||||
2001-02-17 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* pt.c (check_explicit_specialization): Copy TREE_PRIVATE and
|
||||
TREE_PROTECTED from the template being specialized.
|
||||
|
||||
2001-02-17 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* decl2.c (build_artificial_parm): Set TREE_READONLY.
|
||||
|
@ -1662,6 +1662,11 @@ check_explicit_specialization (declarator, decl, template_count, flags)
|
||||
DECL is specializing. */
|
||||
copy_default_args_to_explicit_spec (decl);
|
||||
|
||||
/* This specialization has the same protection as the
|
||||
template it specializes. */
|
||||
TREE_PRIVATE (decl) = TREE_PRIVATE (gen_tmpl);
|
||||
TREE_PROTECTED (decl) = TREE_PROTECTED (gen_tmpl);
|
||||
|
||||
/* Mangle the function name appropriately. Note that we do
|
||||
not mangle specializations of non-template member
|
||||
functions of template classes, e.g. with
|
||||
|
20
gcc/testsuite/g++.old-deja/g++.other/access11.C
Normal file
20
gcc/testsuite/g++.old-deja/g++.other/access11.C
Normal file
@ -0,0 +1,20 @@
|
||||
// Build don't link:
|
||||
// Origin: r.spatschek@fz-juelich.de
|
||||
// Special g++ Options: -w
|
||||
|
||||
class A
|
||||
{
|
||||
private:
|
||||
template <class T> void g(T t) {}
|
||||
int i;
|
||||
};
|
||||
|
||||
template <>
|
||||
void A::g<int>(int t) { i = 1; } // ERROR - private
|
||||
|
||||
int main()
|
||||
{
|
||||
A a;
|
||||
|
||||
a.g<int>(0); // ERROR - private
|
||||
}
|
Loading…
Reference in New Issue
Block a user