On Jun 7, 11 03:23, so wrote:
I think something is missing here.

It doesn't convert fun(int, ufcs) to ufcs.fun(int) as in the examples.
It converts fun(ufcs, int) to ufcs.fun(int).

We need is a solution to this:

fun(T)(arg1, ... ufcs!T, ... argN)

    auto ref opDispatch(string name, T...)(auto ref T args) {
        mixin("alias ." ~ name ~ " f;");
        alias ParameterTypeTuple!f Params;
enum i = staticIndexOf!(Unqual!(typeof(this)), staticMap!(Unqual, Params));
        static assert(i >= 0);
        return f(args[0 .. i], this, args[i .. $]);
    }

(Doesn't work with overload set though.)

Reply via email to