How to fix "typesafe variadic function parameter"?

Steven Schveighoffer schveiguy at gmail.com
Wed May 25 01:48:39 UTC 2022


On 5/24/22 6:54 PM, Andrey Zherikov wrote:
> On Tuesday, 24 May 2022 at 22:51:50 UTC, Adam Ruppe wrote:
>> On Tuesday, 24 May 2022 at 22:46:55 UTC, Andrey Zherikov wrote:
>>>     return S(s);
>>
>> return S(s.dup);
>>
>>
>> The variadic lives in a temporary array that expires at the end of the 
>> function. So copying it out to the GC lets it live on.
>>
>> Your code was wrong on 2.099 too, but the compiler didn't tell you.
> 
> That works, thank you!
> 
> Can this error message be improved some way so this fix becomes obvious?

What is happening is that you have an `auto` return function, which 
infers attributes.

The parameter is being returned, which means it infers `return` on the 
parameter. Then decides that it's not legal.

The compiler error message should be more specific about inferred 
attribute errors and why they occurred, because they are super-confusing.

I believe there are some recent gains in this space. But it's not 100% yet.

-Steve


More information about the Digitalmars-d-learn mailing list