typedefs are useless
Kirk McDonald
kirklin.mcdonald at gmail.com
Mon Dec 3 10:46:12 PST 2007
Steven Schveighoffer wrote:
> This may have arisen somewhere before, but...
>
> Let's say I want a way to create a type that's like a long, but is not
> implicitly convertable from a long.
>
> I can do:
>
> typedef long mytype;
>
> However, I can't create literals of this type. so if I want to initialize a
> mytype value to 6, I have to do:
>
> mytype x = cast(mytype)6L;
>
> And if I want to scale a mytype value, I can do:
>
> x *= 6;
>
> but if I wanted to create a scaled value of another mytype value, this is
> illegal:
>
> x = y * 6;
>
> So in order to get this to work, I have to do:
>
> x = y * cast(mytype)6;
>
> which is really cumersome, when what I want is a integral type that is
> semantically different from the integral type it's based on. But I want
> literals of the base type to implicitly convert to my type so I don't have
> these ugly casts.
>
> Note that an enum is EXACTLY the same as a typedef, with the added feature
> that an enum can have const values of itself accessible as members. In that
> regard, why would anyone use a typedef when it is a less-functional version
> of an enum?
>
> in short, I would like the compiler to auto promote a literal to a typedef
> that was based on that literal's type. Not sure if this is feasible, but
> without something like this, there is no reason to have a typedef keyword.
> I can use enum instead.
>
> -Steve
>
>
You can typedef things other than integral types.
--
Kirk McDonald
http://kirkmcdonald.blogspot.com
Pyd: Connecting D and Python
http://pyd.dsource.org
More information about the Digitalmars-d
mailing list