Passing a variable number of slices into a function

Steven Schveighoffer schveiguy at gmail.com
Mon Jun 22 13:21:08 UTC 2020


On 6/21/20 10:04 PM, user1234 wrote:
> On Monday, 22 June 2020 at 01:47:49 UTC, repr-man wrote:
>> Is there any way to pass an unknown number of slices into a function?  
>> I'm trying to do something along the lines of:
>>
>> void func(T)(T[] args...)
>> {
>>     //...
>> }
>>
>> That wasn't working,
>>
>> [...]
>>
>> Thanks for the help!
> 
> Can you provide more details for "that wasnt working" ? because
> 
>    void func(T)(T[] args...)
>    {
>      writeln(args.length);
>    }
> 
>    void main()
>    {
>      int[] a,b;
>      func(a[0..$],b[0..$]);
>    }
> 
> works, so there must be a missing detail.
> Maybe each slice has different type ?

I think the problem is that typesafe variadics bind to arrays as well as 
individual parameters. So func(a[0 .. $]) for instance would resolve as 
func!int instead of the desired func!(int[]).

The answer might be:

func(T)(T[][] args...)

as Adam says.

-Steve


More information about the Digitalmars-d-learn mailing list