Variadic function not recognizing static array length

Timon Gehr timon.gehr at gmx.ch
Wed Mar 13 15:14:25 PDT 2013


On 03/12/2013 10:47 PM, Zach the Mystic wrote:
> void func(string[2] a) {}
>
> void func2(T...)(T args) {
>     static assert(is(typeof(args[0]) == string[2]));
> }
>
> void func3(T...)(T args) {
>     static assert(args[0].length == 2);
> }
>
> func(["",""]); // Okay
> func2(["",""]); //  Error: (is(string[] == string[2LU])) is false
> func3(["",""]); // Error: _param_0 cannot be read at compile time
>
> Is this the intended design?

Yes.

> Is there a workaround which allows me to
> ensure that the parameter is exactly 2 length?

http://d.puremagic.com/issues/show_bug.cgi?id=9712
http://d.puremagic.com/issues/show_bug.cgi?id=9711


More information about the Digitalmars-d-learn mailing list