== Quote from bearophile (bearophileh...@lycos.com)'s article > Walter Bright: > > The previous behavior for function parameters can be retained by making > > it a ref parameter: > > void foo(ref T[3] a) > If I have generic code, like a templated function, that accepts both a dynamic and a static array, the function call will change its performance signature according to the type (if I don't add a "ref" the pass of a dynamic array will be O(1) while passing a fixed-size array will be O(n)).
Here's a way around that: To pass a static array by reference to a templated function that was written with generic ranges in mind, just slice it to make it a dynamic array: float[3] foo; pragma(msg, typeof(foo[]).stringof); // float[]