diff options
author | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-09-02 17:29:11 +0000 |
---|---|---|
committer | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-09-02 17:29:11 +0000 |
commit | 0dcdeb0d5d7a31795429b1a1d60c76c68dd89d46 (patch) | |
tree | 492aa30784ce56f2ba6a183212d10e2c1ca60463 /gcc/testsuite | |
parent | 393266330fa6fc95d0ec14fe390c15ee02fd2b54 (diff) | |
download | gcc-0dcdeb0d5d7a31795429b1a1d60c76c68dd89d46.tar.gz |
* decl2.c (arg_assoc_template_arg): New prototype. New function.
(arg_assoc_class): Use arg_assoc_template_arg for template
arguments.
(arg_assoc): Likewise.
* pt.c (mangle_class_name_for_template): Allow member template
template arguments.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29060 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/ttp57.C | 45 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/ttp58.C | 48 |
2 files changed, 93 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp57.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp57.C new file mode 100644 index 00000000000..7c7c9386f8a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp57.C @@ -0,0 +1,45 @@ +// Build don't link: +// Origin: Alex Samuel <samuel@codesourcery.com> + +namespace NS +{ + +template <class T, int V> +struct Base +{ +}; + +template <class T> +struct Z +{ + const static int value_ = false; +}; + +template <class T> +struct A : + public Base <T, Z<T>::value_> +{ +}; + +template <class T> +void f(T) +{ +} + +} + + +template <template <class T> class U> +struct B +{ +}; + + +int +main () +{ + B<NS::A> ba; + f (ba); // Koenig lookup + return 0; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/ttp58.C b/gcc/testsuite/g++.old-deja/g++.pt/ttp58.C new file mode 100644 index 00000000000..662058037b7 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/ttp58.C @@ -0,0 +1,48 @@ +// Build don't link: +// Origin: Alex Samuel <samuel@codesourcery.com> + +namespace NS +{ + +template <class T, int V> +struct Base +{ +}; + +template <class T> +struct Z +{ + const static int value_ = false; +}; + +class Outer +{ + template <class T> + struct A : + public Base <T, Z<T>::value_> + { + }; +}; + +template <class T> +void f(T) +{ +} + +} + + +template <template <class T> class U> +struct B +{ +}; + + +int +main () +{ + B<NS::Outer::A> ba; + f (ba); // Koenig lookup + return 0; +} + |