This isn't a question but more of an observation. Here's an interesting 
template from the docs:

template Foo(T, R...)
{
    void Foo(T t, R r)
    {
        writeln(t);
        static if (r.length)    // if more arguments
            Foo(r);             // do the rest of the arguments
    }
}

void main()
{
    Foo(1, 'a', 6.8);
}

What really intrigues me here is not the tuples which I already get, but the 
fact that Foo is a function template. But if I remove the inner Foo() function 
then it's not a function template anymore so the call in main won't work. The 
inner function must have the same name as the template, apparently (it doesn't 
even state this in the docs from what I can tell!).

There seem to be plenty of ways of making templates, sometimes you explicitly 
add the template keyword, sometimes not.. I kind of wish the syntax was more 
unified in this regard.

Well anyway, that page (http://www.digitalmars.com/d/2.0/template.html) reveals 
some really powerfull stuff you can do with templates. If only template error 
messages were as exciting to look at! :p

Reply via email to