On 03/14/2013 04:41 PM, deadalnix wrote:
...
DIP updated.
Using a vastly different set of allowed/disallowed cases. Every delegate
type must implicitly convert to unqualified. Otherwise attribute
inference may break code that would be valid without.
(this has to work differently with explicitly-typed contexts, because
those are not opaque.)
The loss of information in cases like m=i causes problem when the copy
or the destruction of the context isn't trivial.
Cases like c=m must be enabled as they will happen anyway by
transitivity (or we must prevent delegate call when the type qualifier
is changed via transitivity which seem worse to me).
I favour neither, but your approach removes all guarantees on const.
(For the time being, my front end implements the parenthesized part.)
inout const isn't a valid type qualifier so I dropped it.
I consider that a DMD bug.