diff options
author | nathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-08-18 12:44:22 +0000 |
---|---|---|
committer | nathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-08-18 12:44:22 +0000 |
commit | 8de4bdf4dafa5b50901ec2f6404fde8751c5e315 (patch) | |
tree | b9b8dd3cfa93329fef867add520e83622dd43de1 /gcc/testsuite/g++.dg | |
parent | 6267cb8a204a5ceb5507d573430b9b8c0e327bd1 (diff) | |
download | gcc-8de4bdf4dafa5b50901ec2f6404fde8751c5e315.tar.gz |
cp:
* pt.c (instantiate_class_template): Push to class's scope before
tsubsting base.
testsuite:
* g++.dg/template/scope2.C: New test.
* g++.dg/template/error2.C: Correct dg-error
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70540 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/g++.dg')
-rw-r--r-- | gcc/testsuite/g++.dg/template/error2.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/scope2.C | 34 |
2 files changed, 35 insertions, 1 deletions
diff --git a/gcc/testsuite/g++.dg/template/error2.C b/gcc/testsuite/g++.dg/template/error2.C index 1ce9b6f5174..0f3e975cd4f 100644 --- a/gcc/testsuite/g++.dg/template/error2.C +++ b/gcc/testsuite/g++.dg/template/error2.C @@ -14,7 +14,7 @@ template<class T > struct Derived { class Nested : public X<T> - { // { dg-error "instantiated" + { // { dg-error "instantiated" "" } }; Nested m; // { dg-error "instantiated" "" } diff --git a/gcc/testsuite/g++.dg/template/scope2.C b/gcc/testsuite/g++.dg/template/scope2.C new file mode 100644 index 00000000000..79b520cbeab --- /dev/null +++ b/gcc/testsuite/g++.dg/template/scope2.C @@ -0,0 +1,34 @@ +// { dg-do compile } + +// Copyright (C) 2003 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 15 Aug 2003 <nathan@codesourcery.com> + +// checked instantiated bases in wrong scope. + +class Helper {}; + +template<class T> struct X { }; + +template<class T> class Base +{ + protected: + typedef Helper H; +}; + +template<class T > +struct Derived : Base<T> +{ + typedef Base<T> Parent; + typedef typename Parent::H H; + + class Nested : public X<H> {}; + + Nested m; + + void Foo (); +}; + +void Foo (Derived<char> &x) +{ + x.Foo (); +} |