On Sat, 14 Aug 2010 20:34:02 -0500, Jonathan M Davis <[email protected]> wrote:

Well, if you search the D list for typedef, you should find some posts that suggest templated structs combined with alias which get you typedefs. It sounds like something like that will probably end up in Phobos at some point, though apparently there are some issues with conversions (though what they would be if
you're trying to keep the types completely separate, I don't know).

- Jonathan M Davis

Indeed. I did a search on the news group and found this code in a Trass3r post:

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 || 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 );
     }
}

I think I'll do something similar as this. I don't need either explicit or implicit cast between types.


--
Yao G.

Reply via email to