Binary operation on typedefs

Denis Koroskin 2korden at gmail.com
Wed Dec 16 00:48:38 PST 2009


On Wed, 16 Dec 2009 02:45:35 +0300, Zarathustra  
<adam.chrapkowski at gmail.com> wrote:

> Do you think is it bug?
>
> typedef uint A;
> typedef A    B;
>
> const A a1 = cast(A)0x01;
> const A a2 = cast(A)0x02;
>
> const B b1 = cast(B)0x04;
> const B b2 = cast(B)0x04;
>
> const A a3 = a1 | a2; // great it's ok (a1, a2, a3 same type)
> const A a4 = b1; // great it's ok (b1 is delivered from A)
> const A a5 = a1 | b1; // ERROR, but why?
>
> In my opinion result of a1 and b1 shoud be A type not uint.

typedef defines a new type. Use "alias" instead.



More information about the Digitalmars-d mailing list