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