mutable keyword
    Johan Engelen via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Fri May 20 12:33:49 PDT 2016
    
    
  
On Thursday, 19 May 2016 at 23:21:14 UTC, Jonathan M Davis wrote:
>
> No. D's const and immutable provide no backdoors. Rather, they 
> provide strong guarantees. So, if a variable is const, then it 
> cannot be mutated (even internally) except via a mutable 
> reference to the same data.
The "even internally" is incorrect, and I think needs fixing: 
currently you can synchronize on an immutable/const object, but 
the synchronize implementation will write to __monitor inside the 
object (the field after vptr) and gone is the guarantee. This 
means that you cannot put immutable objects in readonly data, for 
example. We had to make TypeInfo objects mutable in LDC exactly 
because of optimization errors due to this const guarantee 
breakage.
I still have to write up a detailed bug report about it...
- Johan
    
    
More information about the Digitalmars-d-learn
mailing list