range and algorithm-related stuff
    Steven Schveighoffer 
    schveiguy at yahoo.com
       
    Mon Jan 26 18:48:20 PST 2009
    
    
  
"Andrei Alexandrescu" wrote
> Probably many people would expect to just write this:
>
> void foo(in SomeRange range) { ... }
>
> and have foo look at the range and its elements no problem, without 
> actually iterating through the range.
Consider that some type  const Range!(T), where T is a reference that 
contains the data to be iterated can be copied without casting to a 
Range!(const T)
I think you even filed an enhancement on this, if I'm not mistaken.  So a 
void foo(in SomeRange range) can be rewritten as void foo(ConstSomeRange), 
and you should technically be able to pass a const(SomeRange) into it.  This 
is because a range is a struct, and aside from the reference to the data, 
everything else is stack local.
Assuming ConstSomeRange is the same as SomeRange but with the data reference 
being const.
-Steve 
    
    
More information about the Digitalmars-d
mailing list