digitalmars.D.bugs - [Issue 2621] New: ref binds to rvalues of user-defined types
- d-bugmail puremagic.com (25/25) Jan 27 2009 http://d.puremagic.com/issues/show_bug.cgi?id=2621
- d-bugmail puremagic.com (13/28) Jan 27 2009 http://d.puremagic.com/issues/show_bug.cgi?id=2621
- d-bugmail puremagic.com (9/9) Mar 11 2009 http://d.puremagic.com/issues/show_bug.cgi?id=2621
http://d.puremagic.com/issues/show_bug.cgi?id=2621 Summary: ref binds to rvalues of user-defined types Product: D Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla digitalmars.com ReportedBy: andrei metalanguage.com 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). --
Jan 27 2009
http://d.puremagic.com/issues/show_bug.cgi?id=2621struct 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) --
Jan 27 2009
http://d.puremagic.com/issues/show_bug.cgi?id=2621 bugzilla digitalmars.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED Fixed dmd 2.026 --
Mar 11 2009