Subject: bug#23610: 25.0.94; c++-mode doesn't fontify typename... like typename

From: Alan Mackenzie <[email-masked]>
Date: Mon, 30 May 2016 15:25:39 +0000

Hello, Óscar.

Thanks for your post!

On Mon, May 30, 2016 at 03:49:57PM +0200, Óscar Fuentes wrote:
> Hello Alan.

> Alan Mackenzie <[email-masked]> writes:

> > I'm not all that familiar with variadic templates.  In the declaration
> > below, is the "..." token syntactically part of "typename..." or is
> > better regarded as part of "... Y"?

> Neither, I'll say.

> It is legal to omit the name of the parameter pack (the `Y' in the
> example).

> > I also need to get a feel for what keywords can come before the "...".
> > Obviously "typename", but what about things like "class"?

> Yes, `class' and `typename' are interchangeable here. There is also
> `sizeof':

I thought there might be something like that.  ;-)

> template <typename ... Ts> struct Foo {
>   void print() {
>     printf("Instantiated with %d parameters.\n", sizeof...(Ts));
>   }
> };

> int main() {
>   Foo<int, double> foo;
>   foo.print();
>   return 0;
> }

> Prints

> Intantiated with 2 parameters.

> > Do you know of a good web page where these things are explained
> > completely and concisely, yet readably?  If so, please tell me!

> Try this, which is short and precise:

> http://en.cppreference.com/w/cpp/language/parameter_pack

That looks like exactly what I need.  Thanks very much!

-- 
Alan Mackenzie (Nuremberg, Germany).