Passing ranges around
H. S. Teoh via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Jul 12 06:50:40 PDT 2016
On Tue, Jul 12, 2016 at 06:37:35AM +0000, Mike Parker via Digitalmars-d-learn wrote:
> On Tuesday, 12 July 2016 at 03:57:09 UTC, Bahman Movaqar wrote:
> > What should be signature of `foo` in the following piece of code?
> >
> > auto foo(range r) {
> > // do something with the `r`
> > }
> >
> > void main() {
> > foo([1,2,3].map!(x => x*x));
> > }
> >
> >
>
> auto foo(R)(R r) { ... }
Better yet:
import std.range.primitives;
auto foo(R)(R r) if (isInputRange!R) { ... }
This is to ensure R is actually a range, so that, for example, foo(123)
will be rejected at compile-time.
T
--
"A man's wife has more power over him than the state has." -- Ralph Emerson
More information about the Digitalmars-d-learn
mailing list