On Sunday, 12 March 2023 at 15:09:45 UTC, Salih Dincer wrote:
Hi,
[...]
// A, we can get its to guarantee us that parameters
// won't change:

auto inConst(T)(T a, const T b) // const
{ // it's not needed --^     but     ^-- why can't this be used


Well you got the great answers to your questions already but I like to add a comment that is that

**`const` parameters without `ref` are really moot.**

I whish at least that they could give the guarantee to be rvalues (i.e have no address) but this is actually not the case. All the D compilers will actually copy `const` parameters to locals, making them lvalues, unless optimizations are requested(1).

See codegen : https://godbolt.org/z/vev1PGWh3.

This brings the idea that maybe a `rvalue` storage class could be added to the language.

(1): Actually DMD does not drop the copy **at all**, even with -O.

Reply via email to