Parameterized template value parameter

Dmitry Olshansky via Digitalmars-d digitalmars-d at puremagic.com
Fri Mar 24 13:43:18 PDT 2017


On 3/24/17 12:24 AM, Yuxuan Shui wrote:
> So I was trying to make my template take a value parameter, whose type
> is also a parameter to the template. e.g.:
>
>     template A(Char[] str, Char);
>
> But dmd complains about 'Char' being undefined. I have to write:
>
>     template A(Char, Char[] str);
>
> Which is inconvenient, because now 'Char' can't be deduced by the compiler.
>
> Can we make the first case work?

How about this?

template A(alias str)
if(is(typeof(str) : Char[], Char)){
	alias Char = typeof(str[0]);
//	...
}

In general it's sometimes possible to do the deduction w/o introducing 
more template arguments.

---
Dmitry Olshansky


More information about the Digitalmars-d mailing list