Why is it that no one writes with portability in mind in druntime?
    Joseph Rushton Wakeling 
    joseph.wakeling at webdrake.net
       
    Mon Nov 25 01:40:11 PST 2013
    
    
  
On 25/11/13 09:52, Jonathan M Davis wrote:
> Yes, they're aliases, but you have to worry about them. Take this code for
> instance.
>
> int len = arr.length;
>
> That code will compile as 32-bit, but it will _not_ compile as 64-bit, because
> length is size_t, which on 32-bit systems happens to be uint, which implicitly
> converts to int, whereas on 64-bit systems, it's ulong, which does _not_
> implicitly convert to it.
You're quite right -- I was just thinking about underlying stuff along the lines 
of what Iain was pointing out for real, not "user-land" cases like this.
To be honest, I assumed that anyone with any experience or common sense would 
understand stuff like the example you've described, and not write such code. 
But that's probably very very naive ... :-)
The size_t case I rather like to think of is:
      size_t m = ...;
      size_t p = 1 << m;    // should this be 1U, 1UL ... ?
    
    
More information about the Digitalmars-d
mailing list