diff options
author | Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> | 2003-05-31 12:13:30 +0000 |
---|---|---|
committer | Kriang Lerdsuwanakij <lerdsuwa@gcc.gnu.org> | 2003-05-31 12:13:30 +0000 |
commit | 76d3baad59795d627f537ea623b0f0e654c3865a (patch) | |
tree | 2b500029ea1e5c63018b8bc070aade0ded6f1568 /gcc/testsuite/g++.dg/template/spec9.C | |
parent | 5fb5709764a36a33083c5edcc473ea59da915a42 (diff) |
re PR c++/10956 (ICE when specializing a template member function of a template class, in tsubst, at cp/pt.c:6459)
PR c++/10956
* pt.c (instantiate_decl): Don't use full template arguments if
we are dealing with specializations.
* g++.dg/template/spec9.C: New test.
From-SVN: r67268
Diffstat (limited to 'gcc/testsuite/g++.dg/template/spec9.C')
-rw-r--r-- | gcc/testsuite/g++.dg/template/spec9.C | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/template/spec9.C b/gcc/testsuite/g++.dg/template/spec9.C new file mode 100644 index 00000000000..013fa0d9920 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/spec9.C @@ -0,0 +1,21 @@ +// { dg-do compile } + +// Origin: Lynn Akers <lakers@peachtree.com> +// Wolfgang Bangerth <bangerth@ticam.utexas.edu> + +// PR c++/10956: Incorrect template substitution for member template +// specialization inside template class. + +template <int> struct C { + template<typename T> void pre_add(T); +}; + +template<> +template<typename T> +void C<32>::pre_add(T) { + T pre; +} + +int main() { + C<32>().pre_add<int>(1); +} |