[dmd-internals] ref const(T) doesn't accept struct temporaries?

Sean Kelly sean at invisibleduck.org
Fri Dec 10 16:17:59 PST 2010


Just saw the discussion.  I don't particularly like the use of "auto" for this, but the behavior makes sense.  I can't help feeling like it could be simplified somehow though :-p

On Dec 10, 2010, at 3:18 PM, Andrei Alexandrescu wrote:

> This matter is discussed now in the newsgroup.
> 
> Andrei
> 
> On 12/10/10 2:13 PM, Sean Kelly wrote:
>> I'm sure there was a discussion about this.  Why the divergence from C++ here?  I'll change the methods to accept Duration by value--it only contains a long.  "auto ref" is intended to solve a different problem, so I won't be using it here.
>> 
>> On Dec 10, 2010, at 12:28 PM, Andrei Alexandrescu wrote:
>> 
>>> An rvalue should not bind to a reference. I think Duration is small enough to pass by value. If not, we need to wait for "auto ref" to be fixed.
>>> 
>>> Andrei
>>> 
>>> On 12/10/10 11:51 AM, Sean Kelly wrote:
>>>> I suppose I should have already known this, but I was surprised today to find that this didn't work:
>>>> 
>>>>     auto val = x + seconds(y);
>>>> 
>>>>     Duration seconds(long x) { ... }
>>>> 
>>>>     struct Duration {
>>>>         Duration opOpAssign(string op)( ref const(Duration) other ) { ... }
>>>>     }
>>>> 
>>>> With the error:
>>>> 
>>>>     Error: function core.time.Duration.opOpAssign!("+").opOpAssign (ref const(Duration) other) is not callable using argument types (Duration)
>>>>     src/core/sync/config.d(59): Error: seconds(y) is not an lvalue
>>>> 
>>>> Someone please tell me that this is a bug and that it will be fixed soon.  A quick search on the bug tracker didn't turn up anything.
>>>> _______________________________________________
>>>> dmd-internals mailing list
>>>> dmd-internals at puremagic.com
>>>> http://lists.puremagic.com/mailman/listinfo/dmd-internals
>>> _______________________________________________
>>> dmd-internals mailing list
>>> dmd-internals at puremagic.com
>>> http://lists.puremagic.com/mailman/listinfo/dmd-internals
>> 
>> _______________________________________________
>> dmd-internals mailing list
>> dmd-internals at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/dmd-internals



More information about the dmd-internals mailing list