On 02.07.2017 05:13, Walter Bright wrote:
On 7/1/2017 3:12 PM, Timon Gehr wrote:
const(const(T)) = const(T)
const(immutable(T)) = immutable(T)
const(inout(T)) = ?
It used to be the case that const(inout(T)) = const(T), but this is
wrong, because if we replace 'inout' by 'immutable', the result should
be immutable(T), not const(T). Hence const(inout(T)) cannot be reduced
further.
If const(inout(T)) is reduced to inout(T), it works.
Counterexample:
const(inout(char))[] foo(bool condition, inout(char)[] chars){
if(!condition) return "condition failed!";
return chars;
}
Turn const(inout(char)) into inout(char) and the example no longer
compiles. (Nor should it.)