Multiple template alias parameters

Brian Schott via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri May 8 14:56:55 PDT 2015


On Friday, 8 May 2015 at 12:44:31 UTC, Artur Skawina wrote:
> On 05/08/15 03:53, Brian Schott via Digitalmars-d-learn wrote:
>> The problem occurs when I want to register multiple modules to 
>> scan for functions. The grammar does not allow this syntax:
>> 
>> ```
>> template (alias Modules ...) {
>> ...
>> ```
>
> The grammar allows omitting the 'alias' keyword.
>
> artur

alias parameters are different from normal template parameters. 
They're not necessary for this problem, but they are for others.

As an example:


void traceVar(alias var, size_t line = __LINE__, string file = 
__FILE__)()
{
	import std.stdio: stderr;
	stderr.writeln(file, "(", line, ") ", var.stringof, ": ", var);
}

This allows you to print a variable's name and value by only 
passing the variable once as a template argument. Allowing 
"template Tem(alias Args ...)" syntax would let me trace multiple 
variables at once.

If you omit "alias", "var.stringof" evaluates to "var" instead of 
its name in the calling context.


More information about the Digitalmars-d-learn mailing list