inout and function/delegate parameters
Stewart Gordon
smjg_1998 at yahoo.com
Sun Feb 19 09:09:37 PST 2012
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.
More information about the Digitalmars-d
mailing list