[Issue 5467] library-based typedef

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Jan 20 08:53:06 PST 2011


http://d.puremagic.com/issues/show_bug.cgi?id=5467



--- Comment #1 from Trass3r <mrmocool at gmx.de> 2011-01-20 08:51:08 PST ---
And that's the latest code draft I could find:

enum Type
{
    Independent,
    Super,
    Sub,
    Parallel,
}

struct Typedef( T, Type type = Type.Sub, T init = T.init, string _f = __FILE__,
int _l = __LINE__ )
{
    T payload = init;


    static if ( type != Type.Independent )
    {
        this( T value )
        {
            payload = value;
        }
    }
    static if ( type == Type.Sub)
    {
        // typedef int foo; foo f;
        // f.opCast!(t)() == cast(t) f
        T opCast(T)()
        {
            return payload;
        }
    }
    static if ( type == Type.Sub || type == Type.Parallel )
    {
        alias payload this;
    }
    static if ( type == Type.Super )
    {
        typeof( this ) opAssign( T value )
        {
            payload = value;
            return this;
        }
    }
    else static if ( type == Type.Sub )
    {
        @disable void opAssign( T value );
    }
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list