std.experimental.allocator and const etc.

Nicholas Wilson iamthewilsonator at hotmail.com
Mon Jul 16 13:35:48 UTC 2018


On Sunday, 15 July 2018 at 13:06:16 UTC, John Colvin wrote:
> Currently the API's don't support const(void)[], e.g.
>
> import std.experimental.allocator : makeArray, theAllocator, 
> dispose;
> import std.experimental.allocator.mallocator : Mallocator;
>
> void main()
> {
>     const a = theAllocator.makeArray!ubyte(100);
>     theAllocator.dispose(a);
>     // can't call RCIAllocator.deallocate(void[] b) with 
> const(ubyte)[]
>
>     const(void)[] b = Mallocator.instance.allocate(100);
>     Mallocator.instance.deallocate(b);
>     // can't call Mallocator.deallocate(void[] b) with 
> const(void)[]
> }
>
> Is this deliberate? It's pretty annoying.

Probably not, the lifetime of the referenced memory is over. 
There's a couple of other places where we cast away const and 
shared before destroying and object.


More information about the Digitalmars-d mailing list