On Tuesday, 5 February 2013 at 12:35:25 UTC, Dan wrote:
Is it the case that this is a D compiler (or library) problem and there is no issue with the code? Or is there really a problem with it that I am not seeing? I gather from the responses the code looks fine, otherwise any misunderstanding would come up quickly.

This is compiler problem.

Transitive const is more than just simple const, and obviously more is better ;-). Since "Slot" is mentioned and "object.AssociativeArrray" it sounds like there may be a const-correctness issue with associative array itself rather than this code? Before the move to 2.061 I had to cast away const on const(V[K]) to get length and to iterate over them. But why the link between History!double and RC[int] when they are totally unrelated? Well, the only relation is their aggregation in BSItem. Baffling.

The root of the problem is in:

struct DAssociativeArray(Key, Value)
{
    struct Slot
    {
        Value value;
    }
}

struct RC {
  this(this) {  }
}

void main()
{
    DAssociativeArray!(int, const(RC)) goo;
}

which doesn't compile (this is how Value[Key] is rewritten).


Any suggestions appreciated.
Thanks
Dan

Reply via email to