Generic collection/element function signatures in D2 versus D1
Nick Sabalausky
a at a.a
Sat Sep 4 01:02:08 PDT 2010
"Nick Sabalausky" <a at a.a> wrote in message
news:i5su5e$23mk$1 at digitalmars.com...
> In D1 I did this sort of thing a fair amount:
>
> void foo(T)(T[] collection, T elem)
> {
> // Blah, whatever
> }
>
> Worked for any of the string types, worked for any array, or anything with
> the appropriate opIndexes, and for all I know there may be some
> improvement that could still be made. But of course, in D2 strings have
> that extra immutable part that mucks up the above for strings (and then
> there's ranges), so: Is there a typical generally-best way in D2 to
> declare a function signature for operating on collections and elements? I
> know it would involve using the standard range interfaces in the body and
> choosing the most restrictive range type that gets the job done, and I'm
> fine with all that, but is there a good example of a typical
> "best-practice" generic-function signature in D2?
>
Oh, also, and perhaps more importantly (I forgot, this was my main original
reason for even posting the question):
What would be the *right* D2 version of the above code that *didn't* bother
with ranges, and just stuck with arrays and strings? Sometimes I need to do
something in CTFE and using ranges leads to using "std.algorithm", and CTFE
still tends to choke on a lot of "std.algorithm".
More information about the Digitalmars-d-learn
mailing list