On Tuesday, 11 November 2014 at 14:09:43 UTC, Lemonfiend wrote:
Oh, no it doesn't. My bad.

It was all about !(Foo) vs !(`Foo(a)`). Is there somewhere I can read more about this?

Don't know whether it's documented, but it's a consequence of using string mixins.

unaryFun (which is used internally by map) is implemented this way:

    auto unaryFun(ElementType)(auto ref ElementType __a)
    {
        mixin("alias " ~ parmName ~ " = __a ;");
        return mixin(fun);
    }

where `fun` is `Foo(a)`. Of course, `Foo` is not visible in std.functional. When you pass in a symbol, the lookup work because it takes place at the point of instantiation.

Reply via email to