Type inference + forwarding lambda predicate

Maxim Fomin maxim at maxim-fomin.ru
Fri Jan 4 08:40:46 PST 2013


On Friday, 4 January 2013 at 16:06:38 UTC, Jacob Carlborg wrote:
> The following code results in a Segmentation fault: 11. The 
> reason seems to be because "any" is called indefinitely. But if 
> I don't use type inference for the lambda it works correctly.
>
> import algorithm = std.algorithm;
>
> bool any (alias predicate, Range) (Range range)
> {
>     return algorithm.any!(predicate)(range);
> }
>
> void main ()
> {
>     auto arr = ["foo"];
>     any!(e => e == "asd")(arr); // segfault
>     // any!((string e) => e == "asd")(arr); // works
> }
>
> Am I doing something wrong or is this a bug?

Seems to be a lambda bug. Take a look at 
http://d.puremagic.com/issues/show_bug.cgi?id=8774 especially 
last Walter's comments. He has fixed many similar issues but 
there are still some problems. This appears to be another one.


More information about the Digitalmars-d-learn mailing list