]> gcc.gnu.org Git - gcc.git/blobdiff - gcc/cp/pt.c
* pt.c (determine_specialization): Give better errors.
[gcc.git] / gcc / cp / pt.c
index e4fa8bb29b9286da6c996496c8b5ffefdba8a388..8d15cb009de631ea678a825997dc6435693bbb64 100644 (file)
@@ -519,7 +519,15 @@ determine_specialization (template_id, decl, targs_out,
        tmpl = DECL_TI_TEMPLATE (fn);
       else if (TREE_CODE (fn) != TEMPLATE_DECL
               || (need_member_template && !is_member_template (fn)))
-       continue;
+       {
+         if (decls_match (decl, fn))
+           {
+             cp_error ("`template <>' applied to non-specialization `%D'",
+                       fn);
+             return NULL_TREE;
+           }
+         continue;
+       }
       else
        tmpl = fn;
 
@@ -564,8 +572,7 @@ determine_specialization (template_id, decl, targs_out,
     {
     no_match:
       if (complain)
-       cp_error ("`%D' does not match any template declaration",
-                 template_id);
+       cp_error ("`%D' does not match any template declaration", decl);
       
       return NULL_TREE;
     }
@@ -574,8 +581,7 @@ determine_specialization (template_id, decl, targs_out,
     ambiguous:
       if (complain)
        {
-         cp_error ("ambiguous template specialization `%D'",
-                   template_id);
+         cp_error ("ambiguous template specialization `%D'", decl);
          print_candidates (templates);
        }
       return NULL_TREE;
This page took 0.034389 seconds and 5 git commands to generate.