Cannot call mutable method on final struct

Christopher Wright dhasenan at gmail.com
Mon Sep 10 04:57:06 PDT 2007


Carlos Santander wrote:
> I don't use D 2.0, but here it goes...
> 
> string is const(char)[] or const char[] or something like that... It's 
> const, anyway, so you aren't supposed to modify it. Replace "string 
> value" with "char[] value".
> 

If I use char[] rather than string, it fails with the error message I 
stated (and indeed, in the original, I used char[] accidentally). If I 
just call Box.toString and don't do anything with the returned string, 
it fails with the same error message.

'string ~= whatever' is valid because the string is not final. The 
compiler rewrites it as 'string = string ~ whatever'.

New minimal test case:
---
import std.boxer;
void main () {
    foreach (b; boxArray(9, 'b')) {
       b.toString;
    }
}
---


More information about the Digitalmars-d-learn mailing list