Here's a transcript of Dee Girl's conclusion about this issue. She seems to know what she's talking about: This code does not work: #!/home/yasuko/bin/rdmd -O -release import std.algorithm; class Sorter {} class ExternalSorter : Sorter { string Merge(string f1, string f2) { return f1 ~ f2; } void Sort() { string[] chunk_list = [ "a", "b" ]; auto mrg = &Merge; auto retfile = reduce!(mrg)(chunk_list[0], chunk_list[1..$]); } } void main(string[] args) { auto s = new ExternalSorter; s.Sort; } But I know how to make it work because I look at the error message. You go to std.algorithm and make NxNHelper from private to public. Then inside NxNHelper also make For from private to public. Then code works. Maybe bug report to Walter is necessary. Private should work because lookup is in correct module. It is bug in compiler not library. Can you please? Thank you, Dee Girl
Many thanks to Dee Girl for finding this bug, and to Brian for relaying it. Walter is working on eliminating this and related bugs, and also on improving support for flexible alias matching in templates. We are committed on bringing a great feature to perfection.
Has been fixed a few releases ago.