Graham St Jack napisał: > The major language hassle for me is that a class reference has the same > const/immutable/shared type as the object is refers to, unlike pointers. > I know that Rebindable is a workaround, but I don't find it satisfactory > - essentially it uses brute-force casting to defeat the type system, and > isn't syntactically identical to the bound type. > > [snip] > > Is there any plan to introduce some way of having a mutable reference to > an immutable class object on the heap? Do others see this as a problem > at all?
I see it as a huge problem too. Crazy idea: introduce @tail to be used in combo with const/immutable. I'd find it even useful on structs. @tail immutable struct Ref { int[] array; int* pointer; int value; } This would be the same as: struct Ref { immutable(int)[] array; immutable(int)* pointer; int value; } No need to examine types field by field to impose such a popular constraint on your structure. But the real money comes from finally having a language-legal way to express a mutable reference to an immutable class. Not to mention that backwards-compatibility is kept (no book will suffer). Tomek