On Thursday, 23 October 2014 at 15:18:09 UTC, Ola Fosheim Grøstad wrote:
On Thursday, 23 October 2014 at 13:57:03 UTC, Low Functioning wrote:
How about a function returns a T', which is implicitly convertible to T, where T' has some enum "tags" attached to it.

Why is implicit conversion a problem? To the compiler it would just be another function call?

Not everything is generic, for one reason or another.

struct notimplicit(T) {
        T _x;
        enum fubared;
}

struct foo(T) {
        T _x;
        alias _x this;
        enum fubared;
}

unittest {
        notimplicit!int a;
        //int _a = a; //error

        foo!int b;
        int _b = b;
}

While it wouldn't matter for a fully generic pipeline, and you'd lose the fubared tag if you turned it back to the base type, it might be handy to propagate the fubared type while remaining compatible with the base.

Reply via email to