Le 20/06/2012 13:58, Timon Gehr a écrit :
Clarification: 'const' means 'const'. No other qualifiers.
There is no 'const' in that example code. 'immutable' obviously needs to
be transitive regardless of the particular interpretation of 'const'.
const means: maybe immutable.
Or maybe mutable. Therefore, interpretation '2.'
Thus const needs to be transitive too.
Wrong. This is the (A==>B) ==> (B==>A) fallacy, where
A: 'const' is transitive
B: 'const' references cannot modify 'immutable' data
I understand the difference. It can change the legality of some calls,
that is true (and probably it is better). But it doesn't change the need
for a frame pointer's qualifier (mandatory to ensure immutability
transitivity).
To benefit of the extra freedom granted by B, what could be the casts
safely allowed on the delegate ? I understand your point, but fail to
find any way to make it work in practice.