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.)

Reply via email to