Is this a bug or am I doing something wrong?

Steven Schveighoffer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Dec 4 06:37:08 PST 2014


On 12/3/14 6:09 PM, Ali Çehreli wrote:
> On 12/03/2014 03:02 PM, drsneed wrote:
>> Check out http://dpaste.dzfl.pl/a5ada78fccf5
>> If my function named "IWillNotCompile" is run, I get an error stating
>> "Component!int' and 'Component!int' are not compatible."
>> If my function named "IWillCompile" is run, there are no errors. They do
>> the same thing, just written slightly differently.
>>
>> Any suggestions?
>
> Unlike C++, rvalues cannot be bound to reference parameters even if
> reference to const.
>
> Make the parameter 'auto ref' and it will compile:
>
>      Component!(T) opBinary(string op)(auto ref Component!(T) rhs)
>
> For auto ref, the function must be a template so that the compiler can
> generate by-reference and by-value versions of it depending on whether
> the argument is lvalue versus rvalue.
>
> Here is my understanding of the issue:
>
>    http://ddili.org/ders/d.en/lvalue_rvalue.html
>

All that being said, what a horrible error message!

-Steve



More information about the Digitalmars-d-learn mailing list