re PR c++/40405 (ICE with invalid initialization of template member)
PR c++/40405 * pt.c (push_template_decl_real): Set DECL_INTERFACE_KNOWN if we got the wrong number of template parms. From-SVN: r196231
This commit is contained in:
parent
82a1326b09
commit
5c505cbacf
@ -1,5 +1,9 @@
|
||||
2013-02-22 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/40405
|
||||
* pt.c (push_template_decl_real): Set DECL_INTERFACE_KNOWN
|
||||
if we got the wrong number of template parms.
|
||||
|
||||
PR c++/56377
|
||||
* pt.c (fn_type_unification): Use explicit args in template
|
||||
instantiation context.
|
||||
|
@ -4782,6 +4782,8 @@ push_template_decl_real (tree decl, bool is_friend)
|
||||
error ("got %d template parameters for %q#T",
|
||||
TREE_VEC_LENGTH (a), current);
|
||||
error (" but %d required", TREE_VEC_LENGTH (t));
|
||||
/* Avoid crash in import_export_decl. */
|
||||
DECL_INTERFACE_KNOWN (decl) = 1;
|
||||
return error_mark_node;
|
||||
}
|
||||
|
||||
|
10
gcc/testsuite/g++.dg/template/error49.C
Normal file
10
gcc/testsuite/g++.dg/template/error49.C
Normal file
@ -0,0 +1,10 @@
|
||||
// PR c++/40405
|
||||
|
||||
template<int, int> struct A
|
||||
{
|
||||
static int i;
|
||||
};
|
||||
|
||||
template<int> int A<0,0>::i = 0; // { dg-error "" }
|
||||
|
||||
int j = A<0,0>::i;
|
Loading…
Reference in New Issue
Block a user