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: r196233
This commit is contained in:
parent
5637104c56
commit
f4cbffbc79
|
@ -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++/56395
|
||||
* tree.c (strip_typedefs): Strip typedefs from TYPENAME_TYPE template
|
||||
args.
|
||||
|
|
|
@ -4740,6 +4740,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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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