On 19/02/2012 15:31, Timon Gehr wrote:
<snip excessive quote>
<snip>
a) int opApply(inout int delegate(ref inout(T)) dg) inout;
b) int opApply(constancy K)(int delegate(constancy L)(ref L(T)) dg) K;

???

Actually affecting the constancy of the delegate itself is not an useful 
operation anyway,
but it could still be achieved:

a) int opApply(inout inout(int delegate(ref inout(T)))) dg) inout; // every 
inout means
the same thing

So "inout inout" would be a special token sequence to link the outer and inner inouts together.

b) int opApply(inout(int delegate(ref inout(T)))) dg) inout; // the inout on 
the delegate
parameter is distinct from the other two

I don't see what the inout applied to the type of dg is actually doing here....

2.

We introduce an infinite number of wildcard storage classes:
inout, inout', inout'', inout''', inout'''', ...
<snip>
[1] furthermore, we'd finally get identifier' identifiers ;)

The lexer would need to be tweaked to support these. And it might get confusing to overload ' like this, given that some other keywords can be immediately followed by a character literal.

Maybe inout$ with some kind of identifying token....

(a) int opApply(int delegate(ref inout$0(T)) dg) inout$0;
(b) int opApply(int delegate(ref inout$1(T)) dg) inout$0;

Hmm....

Stewart.

Reply via email to