March 20, 2017
Given the following, where X and Y mark the spot:

	X epochRegex = regex("([0-9])+:");
	Y aEpochCapture = matchFirst(aVersionString, epochRegex);
	Y bEpochCapture = matchFirst(bVersionString, epochRegex);

If X or Y are const or immutable the code fails to compile. Only if both X and Y are auto does this code compile. So question to the audience: how do you do single assignment programming in D? Is it, in fact, impossible to program with bindings rather than variables in D?

And yes this does seem to be a violation of the Principle of Least Surprise.

-- 
Russel. ============================================================================= Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder@ekiga.net 41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel@winder.org.uk London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder

March 20, 2017
A file stream would be another example of a thing that can't be naturally const even if you opened it for reading.