mutable keyword

ciechowoj via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri May 20 14:35:27 PDT 2016


On Friday, 20 May 2016 at 20:45:05 UTC, Jonathan M Davis wrote:
> If you want something that's ref-counted and works in pure 
> code, const will _not_ work, because you can't legally alter 
> the ref-count.

What about something like this (ignoring multi-threading issues):

struct RefCountPool {
    size_t acquireIndex();
    void releaseIndex(size_t index);

    size_t* accessRefCounter(size_t index);
}

RefCountPool refCountPool;

struct SharedPtr
{
    size_t index;
    void* ptr;

    SharedPtr(void* ptr) {
        this.ptr = ptr;
        index = refCountPool.acquireIndex();
    }

    // more methods, counter manipulation through accessRefCounter
}

Is is still legal? Would it breach @pure requirements (I believe 
so...)? After all it doesn't differs much from having a pointer 
instead of index.



More information about the Digitalmars-d-learn mailing list