[Issue 11247] Error: typeof(i).sizeof is used as a type

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sun Oct 13 14:13:03 PDT 2013


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


Maxim Fomin <maxim at maxim-fomin.ru> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |maxim at maxim-fomin.ru


--- Comment #1 from Maxim Fomin <maxim at maxim-fomin.ru> 2013-10-13 14:13:01 PDT ---
(In reply to comment #0)
> Not sure what to make of this:
> 
> //----
> void main()
> {
>     int i;
> 
>     //This is OK:
>     enum N = typeof(i).sizeof;
>     byte[N] a;
> 
>     //This is also OK:
>     byte[int.sizeof] b;
> 
>     //This errors out
>     byte[typeof(i).sizeof] b;
> }
> //----
> Error: typeof(i).sizeof is used as a type
> //----
> 
> I *think* the compiler thinks I'm declaring an AA (When I want a SA) ?

Of course you are declaring AA here because D does not support variable arrays
like C. Sizeof property in this context is treated as type, not expression -
that's why sizeof yileds ulong, not 4.

If you wanted to have static array here, then this is invalid report. However,
if you want this to compile as AA array, than this is really rejects-valid. On
the other hand, this is useless - in such cases Foo[bar.sizeof] always yileds
Foo[ulong].

-- 
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