Function with static array as parameter

Nicholas Wilson via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jul 12 06:41:33 PDT 2017


On Wednesday, 12 July 2017 at 12:20:11 UTC, Miguel L wrote:
> What is the best way in D to create a function that receives a 
> static array of any length?

Do know that static arrays are passed by value in D, so passing a 
static array of a million elements will copy them...

There are two solutions to this:
1) pass the static array by reference. This will pass a pointer 
to the array and won't copy it although modifying it will modify 
the original. consider passing const ref if the function doesn't 
modify it. Although will still create its of template bloat.
2) pass a slice of the static array. this is essentially the same 
as the above, but you also pass the length of the array as well. 
This means it can accept a slice of a static array of any size 
(or any dynamic array) and since it isn't a template the compiler 
won't make lots of copies for different sized array. This is 
probably he better option.


More information about the Digitalmars-d-learn mailing list