diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 31dcfe42b54..216ced7007b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,7 @@ Wed Mar 18 00:24:10 1998 Jason Merrill + * pt.c (push_template_decl): Only check primary templates. + * pt.c (check_explicit_specialization): Complain about default args in explicit specialization. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 30b4054d655..13fd811c785 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -1381,11 +1381,6 @@ push_template_decl (decl) int is_friend = (TREE_CODE (decl) == FUNCTION_DECL && DECL_FRIEND_P (decl)); - if (current_lang_name == lang_name_c) - cp_error ("template with C linkage"); - if (TREE_CODE (decl) == TYPE_DECL && ANON_AGGRNAME_P (DECL_NAME (decl))) - cp_error ("template class without a name"); - if (is_friend) /* For a friend, we want the context of the friend function, not the type of which it is a friend. */ @@ -1416,6 +1411,14 @@ push_template_decl (decl) else primary = 0; + if (primary) + { + if (current_lang_name == lang_name_c) + cp_error ("template with C linkage"); + if (TREE_CODE (decl) == TYPE_DECL && ANON_AGGRNAME_P (DECL_NAME (decl))) + cp_error ("template class without a name"); + } + /* Partial specialization. */ if (TREE_CODE (decl) == TYPE_DECL && DECL_ARTIFICIAL (decl) && CLASSTYPE_TEMPLATE_SPECIALIZATION (TREE_TYPE (decl)))