initializedArray
Philippe Sigaud
philippe.sigaud at gmail.com
Tue Dec 20 12:17:44 PST 2011
On Tue, Dec 20, 2011 at 14:22, Andrej Mitrovic
<andrej.mitrovich at gmail.com> wrote:
> Ok here's an initial implementation (I've had to put the initializer
> first, otherwise I can't use variadic arguments):
Why? That works for me:
auto initializedArray(T, I...)(I args)
if (allSatisfy!(isIntegral, I[0 .. $-1])
&& isImplicitlyConvertible!(I[$-1], BaseElementType!T) // Least
constraining that your original test
&& (I[0..$-1].length == rank!T)) // Verify the number of arguments
{
auto arr = uninitializedArray!(T)(args[0 .. $-1]);
initArr(arr, args[$-1]);
return arr;
}
void main()
{
auto arr = initializedArray!(float[][])(3, 4, 3.0f);
writeln(arr);
}
If you want to separate the dimensions and the intializer, another
solution would be to return a intermediate callable struct:
auto arr = initializedArray!(float[][])(3,4)(3.0f);
> http://www.ideone.com/2rqFb
More information about the Digitalmars-d
mailing list