Simplifying templates

dfgh dfgh at mailinator.com
Sun Nov 30 11:44:39 PST 2008


Kagamin Wrote:

> And you'd better get acquainted with
> http://www.digitalmars.com/d/2.0/template.html
> http://www.digitalmars.com/d/2.0/template-mixin.html
> http://www.digitalmars.com/d/2.0/templates-revisited.html
> http://www.digitalmars.com/d/2.0/variadic-function-templates.html
> http://www.digitalmars.com/d/2.0/template-comparison.html
> and figure out whether you proposal barely covers all D templates use cases.

I have read all those pages. My proposal would be compatible with them. About your other question, instead of writing:

T Square(T)(T t)
{
    return t * t;
}

writefln("The square of %s is %s", 3, Square(3));

we would write:

T Square(type T, T t)
{
    return t * t;
}

writefln("The square of %s is %s", 3, Square(3));

If a non-type argument is used in place of a type that will occur later in the parameter list, we just skip the type and infer it later. It works just as well as the current approach. If you think it would be too confusing, you can put all your types before any non-types; it would just be syntactic sugar on what we have now.

--Sam



More information about the Digitalmars-d mailing list