`in` parameters made useful

Kagamin spam at here.lot
Tue Aug 25 12:09:45 UTC 2020


On Friday, 21 August 2020 at 18:23:08 UTC, Mathias LANG wrote:
> The second example is pretty simple: the backend will decide 
> whether to pass it by ref or not. Since it's a small type, it 
> might make more sense to pass it in registers. Whether or not 
> it's ref does not matter to the programmer, because the 
> programmer cannot change the input anyway, only read it.

The backend doesn't know how to load the data. It matters to the 
programmer, because it affects performance.

Another example:
void log(in ref int n)
{
   write(fd, &n, n.sizeof);
}
If the argument here is passed by value, it will need to fiddle 
with stack and the code will be less optimal.

>> Doesn't this defeat your optimization when passing by value is 
>> expensive?
>
> I don't see how ?

If a non-POD object is passed by value, it will have extra calls 
to postblit and destructor.


More information about the Digitalmars-d mailing list