foreach doesn't seem to know about invariant. Watch... import std.stdio; void main() { string s = "hello"; foreach(ref c;s) { c = '*'; } writefln(s); } Prints *****