static immutable and lambdas inside struct or class. Is that bug or not?
Uranuz via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Aug 14 09:30:44 PDT 2016
On Sunday, 14 August 2016 at 15:53:21 UTC, ag0aep6g wrote:
> On 08/14/2016 04:27 PM, Uranuz wrote:
>> [...]
>
> Looks like a compiler bug, since it works without the struct:
>
> ----
> import std.algorithm: map;
> import std.array: array;
> import std.typecons: tuple;
>
>
> immutable aaa = [
> tuple("1", "one"),
> tuple("2", "two"),
> tuple("3", "three")
> ];
>
> immutable bbb = aaa.map!( a => a[0] ).array;
> ----
>
> And that's essentially the same thing.
>
> It has already been filed:
> https://issues.dlang.org/show_bug.cgi?id=15908
>
> For a workaround, it works when you explicitly state the type
> of the parameter:
>
> ----
> struct A
> {
> import std.algorithm: map;
> import std.array: array;
> import std.typecons: tuple, Tuple;
>
>
> static immutable aaa = [
> tuple("1", "one"),
> tuple("2", "two"),
> tuple("3", "three")
> ];
>
> alias Tup = Tuple!(string, string);
> static immutable bbb = aaa.map!( (Tup a) => a[0] ).array;
> }
> ----
OK. I just declared alias for predicate outside struct to
workaround. Maybe compiler trying to get context when attemting
to infer arguments for some reason, but fails. Or something
else...
More information about the Digitalmars-d-learn
mailing list