diff options
author | Jason Merrill <jason@redhat.com> | 2010-10-22 14:37:53 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2010-10-22 14:37:53 -0400 |
commit | 59dd34c40837ec0eadb3b08206c9d2cf558bc482 (patch) | |
tree | 133efb456de2bed3f891e614097334da3cbe10fb /gcc/cp/pt.c | |
parent | f91352dcc350244cdfecca727b9daf2a652f0bea (diff) | |
download | gcc-59dd34c40837ec0eadb3b08206c9d2cf558bc482.zip gcc-59dd34c40837ec0eadb3b08206c9d2cf558bc482.tar.gz gcc-59dd34c40837ec0eadb3b08206c9d2cf558bc482.tar.bz2 |
re PR c++/46129 (ICE: in tsubst_copy, at cp/pt.c:11375)
PR c++/46129
* pt.c (instantiate_class_template): Don't instantiate default
arguments.
From-SVN: r165850
Diffstat (limited to 'gcc/cp/pt.c')
-rw-r--r-- | gcc/cp/pt.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 85a5ea5..19e8512 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -8238,17 +8238,12 @@ instantiate_class_template (tree type) finish_struct_1 (type); TYPE_BEING_DEFINED (type) = 0; - /* Now that the class is complete, instantiate default arguments for - any member functions. We don't do this earlier because the - default arguments may reference members of the class. */ - if (!PRIMARY_TEMPLATE_P (templ)) - for (t = TYPE_METHODS (type); t; t = DECL_CHAIN (t)) - if (TREE_CODE (t) == FUNCTION_DECL - /* Implicitly generated member functions will not have template - information; they are not instantiations, but instead are - created "fresh" for each instantiation. */ - && DECL_TEMPLATE_INFO (t)) - tsubst_default_arguments (t); + /* We don't instantiate default arguments for member functions. 14.7.1: + + The implicit instantiation of a class template specialization causes + the implicit instantiation of the declarations, but not of the + definitions or default arguments, of the class member functions, + member classes, static data members and member templates.... */ /* Some typedefs referenced from within the template code need to be access checked at template instantiation time, i.e now. These types were |