Subject: bug#7579: cc-mode c++ template-typed variable decl regression

From: Daniel Colascione <[email-masked]>
Date: Tue, 14 Feb 2012 09:16:25 -0800

Hi Alan,

On 2/14/12 8:11 AM, Alan Mackenzie wrote:
>>>> /* In Emacs 23, adffdfa below is fontified as a variable. In Emacs HEAD,
>>>> it is not. */
> 
>>>> void foo()
>>>> {
>>>>     mumble x(5);
>>>>     std::vector<int> adffdfa(1,2,3);
>>>> };
> 
>> Are there any syntactic clues here that a variable rather than a function
>> is being declared?  All I can see is that numeric literals take the place
>> of "parameters".
> 
> Please ignore this request.  Obviously, for a function, there must be
> either nothing in the parentheses or  [<type> <value>]*.

Or just types:

std::vector <int> blah(int);

typedef int foo;
std::vector <int> blah(foo);

Still, unless we're absolutely sure we're looking at a function
declaration, we should fontify a declaration as a variables
declaration. Function-scope function declarations are extremely
uncommon, and at least in my experience, almost always offset by
keywords like "extern". Even if something like int bar(); could be a
function, fontifying it as a variable would be the right thing to do
in function scope for C++.