Should 'in' Imply 'ref' as Well for Value Types?
Bolpat
qs.il.paperinik at gmail.com
Sat May 5 15:22:04 UTC 2018
On Friday, 4 May 2018 at 09:34:14 UTC, Jonathan M Davis wrote:
> [...]
> It's actually not infrequent now that in C++, you want to pass
> stuf by value rather than const& precisely because move
> semantics can be used to avoid copies. So, it's not at all
> necessarily the case that passing by ref is the efficient thing
> to do. It's heavily dependent on the code in question.
I once proposed that `in` can mean `const scope ref` that also
binds rvalues.
https://github.com/dlang/DIPs/pull/111#issuecomment-381911140
We could make `in` be something similar to `inline`. The compiler
can implement it as stated above (assign the expression to
temporary, reference it), or use copy if copy is cheaper than
referencing.
> So, even if we were designing in from scratch, making ref would
> be a questionable choice. However, even if we all agreed that
> it would be desirable, such a change would break a large
> percentage of code that currently uses in, because any code
> that passes an rvalue to a function taking its argument as in
> would then break. So, any attempt to change in to include ref
> would have to have some sort of deprecation path to avoid code
> breakage. But given how annoying it would be to have in be ref
> by default due to how that affects rvalues, I'm willing to bet
> that most programmers would not be at all happy with such a
> change, regardless of how well the transitition was handled.
Yes. Therefore the idea above. It will break much less code if
any.
More information about the Digitalmars-d
mailing list