On Thursday, 8 September 2016 at 13:38:54 UTC, Steven Schveighoffer wrote:

There is a workaround, identified by Vladimir Panteleev (https://blog.thecybershadow.net/2015/04/28/the-amazing-template-that-does-nothing/):


import std.algorithm;
bool fulfillsKeyPredicate(string s, string t) {return true;}

alias I(alias x) = x;

void main(string[] args)
{
alias keyPredicateFilter = filter!(e => e.fulfillsKeyPredicate(args[0]));
    string[] arr;

    keyPredicateFilter(arr);
    arr.I!keyPredicateFilter;
}

Unfortunately, you can't alias the I!someSymbol, as that has the same problem.

-Steve

Thanks for this insight. In my case I prepare a presentation about D
(audience doesn't now anything about D)
and tried to make my D code as beautiful as possible. As solution
I created now a free template method and hide it in a library module.

T[] filterByKeyPredicate(T)(T[] arr, string[string] keyPredicate)
{
...filter!....
}

This way I can use UFCS.

Kind regards
André

Reply via email to