[Issue 2621] ref binds to rvalues of user-defined types

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Jan 27 07:48:25 PST 2009


http://d.puremagic.com/issues/show_bug.cgi?id=2621





------- Comment #1 from andrei at metalanguage.com  2009-01-27 09:48 -------
(In reply to comment #0)
> struct Struct {}
> alias Struct T;
> //alias int T;
> 
> T fun() { return T(); }
> void gun(ref T) {}
> void main()
> {
>     gun(fun);
> }
> 
> The code compiles and it shouldn't. ref should never bind to rvalues. Currently
> indeed it doesn't bind to rvalues of built-in type (e.g. if the alias above is
> switched from Struct to int the code won't compile).
> 

Furthermore, adding this overload should make the code work:

void gun(T) {}

Currently adding the overload results in the error message:

function test.gun called with argument types:
        (Struct)
matches both:
        test.gun(ref Struct _param_0)
and:
        test.gun(Struct _param_0)


-- 



More information about the Digitalmars-d-bugs mailing list