www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 19287] New: each only accepts lambdas that take a single

https://issues.dlang.org/show_bug.cgi?id=19287

          Issue ID: 19287
           Summary: each only accepts lambdas that take a single argument
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: phobos
          Assignee: nobody puremagic.com
          Reporter: iamthewilsonator hotmail.com

See https://forum.dlang.org/post/tgnnsqkclbcaejhbiprn forum.dlang.org for the
motivation.

struct that contain destructors cannot be closed over (I'm not sure why but
thats a different problem) and so 

CantCloseMe o; // some struct with a door
somerange.each!(e => foo(o,e)); //Error: variable `o` has scoped destruction,
cannot build closure

fails. But it can't be worked around with 
somerange.each!((e,f) => foo(o,f))(o);

Fails with

Error: template somerange.each!((e,f) => foo(o,f)).each cannot deduce function
from argument types !()(SomeRange, CantCloseMe), candidates are:
...

because all of the each functions take only a range or iterable.

--
Oct 04 2018