10.01.2011 21:08, Mitja пишет:
Thanks, toDelegate is what I've been looking for.
It still segfaults, though.
The setup:
=======
module mod1;
import std.algorithm;
import std.functional;
import std.stdio;
void main( ) {
auto haystack = ["a","b","c"];
auto needle = "b";
auto flt = delegate(string s){return s == needle;};
auto dg = toDelegate( flt );
auto result = filter!dg(haystack);
writeln(result);
}
=========
module mod2;
import std.string;
// or import std.conv;
// or import std.random;
========
dmd mod2.d mod1.d compiles, but compiled program segfaults.
System is Debian GNU/Linux 5.0 on 2.6.26-2-686 #1 SMP i686.
dmd is D 2.051.
Try it with previous compiler version. It looks like a bug I've reported
not so long ago: in 2.051 functions with 'auto' result type and at least
one parameter cause segfault during compilation when they are in a
separate module. I can't remember issue number right now (and have no
internet connection to find it), but it's pretty recent.