Thread overview
Cannot pass const(T) to function with ref const(T)
Mar 13, 2021
Andrey
Mar 13, 2021
Andrey
March 13, 2021
Hello,
Dmd gives an error:
> Error: function `_setPastBases(ref const(Data) item, ref const(Word!(wstring, wstring)) base)` is not callable using argument types `(const(Data), Word!(wstring, wstring))

where Data and Word - structs.

What happens and how to pass arguments?

Ldc compiles without such error.
March 13, 2021
Mistake. It says about simple argument:
> cannot pass rvalue argument `xxxxx` of type `Word!(wstring, wstring)` to parameter `ref const(Word!(wstring, wstring)) base`

Function:
> void _setPastBases(const ref Data item, const ref UsualWord base)
March 13, 2021
On 3/13/21 5:24 PM, Andrey wrote:
> Mistake. It says about simple argument:
>> cannot pass rvalue argument `xxxxx` of type `Word!(wstring, wstring)` to parameter `ref const(Word!(wstring, wstring)) base`
> 
> Function:
>> void _setPastBases(const ref Data item, const ref UsualWord base)

Yeah, D does not allow (without a switch) passing an rvalue (i.e. a temporary) into a reference.

There is a preview switch for it, I think -preview=rvaluerefparam

-Steve