On Sunday, 1 March 2015 at 15:40:06 UTC, Atila Neves wrote:
I've lost count now of how many times I've had to downgrade to auto despite always wanting immutable or const. This doesn't work:

 auto reg = regex(`(foo)`);
 const match = "foo".matchAll(reg);
 writeln(match.captures); //oops, captures isn't const

It should, but it doesn't. Maxime talked about it here as well:

http://pointersgonewild.com/2014/07/11/the-constness-problem/

Atila

`match.captures` is a range; it's only natural for a range to have mutable state to be iterable.

D's const is a bridge between immutable and mutable. const has to be transitive because immutable is transitive. Don't use it as if it was C++ const: there's no logical const in D, and if there ever will be, it can't use the same `const` type qualifier.

Reply via email to