On 9/7/16 4:26 AM, Andre Pany wrote:
On Wednesday, 7 September 2016 at 08:08:34 UTC, rikki cattermole wrote:
On 07/09/2016 8:06 PM, Andre Pany wrote:

Should I open an enhancement request?

No.
It works outside of the function (part of lookup rules).

I simplified my example too much. Yes in the example above I can move
the alias
outside the main function. Here is a more complex example.

As I use the input parameter args in the alias, I cannot move the alias
outside
the main function.

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

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

    keyPredicateFilter(arr);
    arr.keyPredicateFilter;
}

Is there a workaround? Or is still a valid scenario to change the lookup
rules?

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

Reply via email to