http://d.puremagic.com/issues/show_bug.cgi?id=11247
--- Comment #3 from Maxim Fomin <ma...@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: -------