https://issues.dlang.org/show_bug.cgi?id=15906
Kenji Hara <k.hara...@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |link-failure Summary|GIT HEAD undefined |[REG2.068.1] GIT HEAD |references |undefined references --- Comment #2 from Kenji Hara <k.hara...@gmail.com> --- Dustmited test case: //////////////////////////////////////// // test.d import algo; import file; void main() { [ `` ].map!(a => dirEntries(a).map!(a => a)); } //////////////////////////////////////// // file.d struct RefCounted(T) { struct RefCountedStore { struct Impl { T _payload; } Impl* _store; } RefCountedStore _refCounted; inout(T) refCountedPayload() inout { return _refCounted._store._payload; } alias refCountedPayload this; } struct DirEntry {} struct DirIteratorImpl {} struct DirIterator { RefCounted!(DirIteratorImpl) impl; } auto dirEntries(string) { import algo; bool f(DirEntry de) { return true; } return filter!f(DirIterator()); } //////////////////////////////////////// // algo.d template unaryFun(alias fun) { alias unaryFun = fun; } template ElementType(R) { static if (is(typeof(R.init.front) T)) alias ElementType = T; } T front(T)(T[] ) { return []; } template map(fun...) { auto map(Range)(Range r) { alias RE = ElementType!Range; alias _fun = unaryFun!fun; assert(!is(typeof(_fun(RE.init)))); return MapResult!(_fun, Range)(r); } } struct MapResult(alias fun, R) { R _input; @property front() { fun(_input.front); } } template filter(alias pred) { auto filter(R)(R ) { return FilterResult!(pred, R)(); } } struct FilterResult(alias pred, R) { R _input; @property front() { return _input; } } Introduced in: https://github.com/D-Programming-Language/dmd/pull/5001 --