The analogue of "fill-pointer" in D

John Colvin via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon May 18 11:19:25 PDT 2015


On Monday, 18 May 2015 at 17:43:50 UTC, Ali Çehreli wrote:
> On 05/18/2015 05:26 AM, John Colvin wrote:
>> On Monday, 18 May 2015 at 11:40:13 UTC, thedeemon wrote:
>>> On Monday, 18 May 2015 at 10:24:25 UTC, Dennis Ritchie wrote:
>>>
>>>> No, afraid not. Function capacity is not an analogue of 
>>>> fill-pointers!
>>>
>>> It's exactly the same.
>>
>> But in D capacity is affected by other things.
>>
>> auto a = new int[20];
>> auto b = arr[0..10];
>> //can't now append to b without re-allocating or using 
>> assumeSafeAppend.
>
> Perfect opportunity to inject my newly-discovered issue with 
> capacity:
>
> void main()
> {
>     auto a = new int[20];
>     foo(a);
>     //can't now append to a
> }
>
> void foo(const(int)[] p)
> {
>     p ~= 42;
> }
>
> Ali

I don't understand what's counterintuitive here. Slices are just 
pointer and length, everything else is global state.


More information about the Digitalmars-d-learn mailing list