[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:33:59 PDT 2013


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



--- Comment #3 from Maxim Fomin <maxim at maxim-fomin.ru> 2013-10-13 14:33:57 PDT ---
(In reply to comment #2)
> (In reply to comment #1)
> > (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 is a compile time constant though... so it's not a variable size array.
> EG:
> byte[int.sizeof] b;
> static sized array.
> 
> > Sizeof property in this context is treated as type, not expression
> 
> Why?
> byte[int.sizeof] b;
> Here, it's treated correctly. it's the "typeof" that is throwing it off.

It looks like it is undocumented whether sizeof should yield ulong or 4 here. 

> 
> > that's why sizeof yileds ulong, not 4.
> 
> sizeof can yield a *type*? That's news to me.
> 
> > 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].
> 
> I *really* don't understand how:
> byte[int.sizeof] b;
> byte[typeof(i).sizeof] c;
> Could have two different behaviors...

Yes, they should be same.

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