On Monday, 18 March 2013 at 22:59:58 UTC, Timon Gehr wrote:
> On 03/18/2013 11:52 PM, monarch_dodra wrote:
>> On Monday, 18 March 2013 at 22:33:17 UTC, Timon Gehr wrote:
>>> On 03/18/2013 10:45 PM, monarch_dodra wrote:
>>>> ...
>>>>>>>> ubyte[4096] x = repeat( cast(ubyte)0 )[ 0 .. 4096 ].array();
>>>>>>>> This can be used as-is inside normal code. Hwoever, array is not
>>>> CTFE-able, so it can't work to define a struct T.init value.
>>>>>> Which is annoying and should be fixed.
>>>> Making array work with CTFE is a no-go, as array's job is to run-time
>> allocate a new array.
>>>> Uh. Its job is to collect a range into an array. Implementation details are irrelevant.
Yes, you are right. For a few seconds I though that all allocations were banned in CTFE, but it's actually hand made allocation that don't work.
>> Now, if we had "staticArray(R, Sizes)(R)" transforms a range into an
>> array whose size is know at compile time, then that's another story.
>> It'd be more efficient at run-time, and CTFE-able
>>>> Sizes should go first.
Hum, I had meant: "staticArray(R, Sizes...)(R)" in case you wanted a multidim array.
I'm not 100% sure if putting Sizes... before R mixes well.
>> 1) Do we want such a weird and specific function? Or is that just
>> premature optimization? I mean, is there a real need?
>> Use 'copy'.
Yes, but unfortunately, using 'copy' entails first declaring the variable, then copying to it, which defeats what we're trying to achieve.
That said, I investigated array, and just got it to work :) And it was trivial, so I'll push it.

On 03/19/2013 08:18 AM, monarch_dodra wrote:
> ...
>> Hum, I had meant: "staticArray(R, Sizes...)(R)" in case you wanted a
> multidim array.
>> I'm not 100% sure if putting Sizes... before R mixes well.
>
It would have to be
template staticArray(Sizes...){
auto staticArray(R)(R range){ ... }
}
>>> 1) Do we want such a weird and specific function? Or is that just
>>> premature optimization? I mean, is there a real need?
>>>> Use 'copy'.
>> Yes, but unfortunately, using 'copy' entails first declaring the
> variable, then copying to it, which defeats what we're trying to achieve.
>
staticArray is fine too.
> That said, I investigated array, and just got it to work :) And it was
> trivial, so I'll push it.
Great.