From 88b4a959ac74ff2518b44a4586b369eb01b9d2c5 Mon Sep 17 00:00:00 2001
From: Alan Mackenzie <acm@muc.de>
Date: Tue, 29 Jan 2008 20:33:38 +0000
Subject: [PATCH] (c-specifier-key): Exclude "template" from this regexp; to
 allow the "{" of a template function to be correctly anchored on "template",
 not the following "<".

---
 lisp/ChangeLog             | 3 +++
 lisp/progmodes/cc-langs.el | 8 +++++---
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index b6916f18d09..c089bb61f5e 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,8 @@
 2008-01-29  Alan Mackenzie  <acm@muc.de>
 
+	* progmodes/cc-langs.el (c-specifier-key): Exclude "template"
+	from this regexp; part of same fix as next change to cc-engine.el.
+
 	* progmodes/cc-engine.el (c-guess-basic-syntax, CASE 5A.5): Anchor
 	the "{" of a template function correctly on "template", not the
 	following "<".
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index ea527730620..54725c0fd88 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -1771,11 +1771,13 @@ one of `c-type-list-kwds', `c-ref-list-kwds',
 (c-lang-defvar c-prefix-spec-kwds-re (c-lang-const c-prefix-spec-kwds-re))
 
 (c-lang-defconst c-specifier-key
-  ;; Adorned regexp of the keywords in `c-prefix-spec-kwds' that
-  ;; aren't ambiguous with types or type prefixes.
+  ;; Adorned regexp of the keywords in `c-prefix-spec-kwds' that aren't
+  ;; ambiguous with types or type prefixes.  These are the keywords (like
+  ;; extern, namespace, but NOT template) that can modify a declaration.
   t (c-make-keywords-re t
       (set-difference (c-lang-const c-prefix-spec-kwds)
-		      (c-lang-const c-type-start-kwds)
+		      (append (c-lang-const c-type-start-kwds)
+			      (c-lang-const c-<>-arglist-kwds))
 		      :test 'string-equal)))
 (c-lang-defvar c-specifier-key (c-lang-const c-specifier-key))
 
-- 
2.39.5