You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ordinarily, I don't have to slice an array to treat it as a range. However, when passing it as template alias parameter, it seems like I do:
---
enum test(alias fun) = "it works";
immutable a = [1,2,3];
pragma(msg, test!(a[].map!(x => x))); // OK
pragma(msg, test!(a.map!(x => x))); // map is not a member of a
pragma(msg, test!(map!(x => x)(a))); // OK (no UFCS)
// but a.map does work at runtime ...
unittest {
auto r = a.map!(x => x);
}
---
The text was updated successfully, but these errors were encountered:
Still does not work in 2.080 release.
The error message however is interesting.
Here is a modified example with a line containing `(a)` instead of `a`.
Compile with `dmd -main`:
-----
import std.algorithm;
enum test(alias fun) = "it works";
immutable a = [1,2,3];
pragma(msg, typeof(a)); // immutable(int[])
pragma(msg, test!((a).map!(x => x))); // "it works"
pragma(msg, test!(a.map!(x => x))); // template identifier `map` is not a member of variable `a.a`-----
Why is that `a.a` in the first place?
Does the compiler mistake `a` for an eponymous template somehow, instead of seeing that `map` is a template here?
ryan reported this on 2016-04-04T11:33:20Z
Transferred from https://issues.dlang.org/show_bug.cgi?id=15870
CC List
Description
The text was updated successfully, but these errors were encountered: