Passing $ as a function argument
lngns
contact at lngnslnvsk.net
Sun Oct 14 13:18:37 UTC 2018
On Wednesday, 10 October 2018 at 13:32:15 UTC, Simen Kjærås wrote:
> struct Sentinel {}
> Sentinel $;
>
> void foo(T)(T loc) {
> auto bar = double[RandomPInt+1];
> static if (is(T == Sentinel)) {
> return bar[$];
> } else {
> return bar[loc];
> }
> }
>
> unittest {
> foo($);
> }
It looks to me OP is proposing exactly this, but wants the
subscript expression to support it.
That would require introducing a new type or changing size_t, so
that both integer indices and the sentinel can be passed around.
Present-day size_t is unsigned, so we can't use negative values
to represent it.
I guess it could be useful when you are manipulating multiple
arrays at the same time in a functional fashion and need the
upper bound of all of them at one point, which could be different.
More information about the Digitalmars-d
mailing list