Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
June 23, 2011 [Issue 6200] New: [GSoC] Value returned by function cannot be passed as ref const. | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=6200 Summary: [GSoC] Value returned by function cannot be passed as ref const. Product: D Version: D2 Platform: All OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody@puremagic.com ReportedBy: cristi.cobzarenco@gmail.com --- Comment #0 from Cristi Cobzarenco <cristi.cobzarenco@gmail.com> 2011-06-23 12:23:27 PDT --- struct Test {} void takes( ref const Test x ) {} Test gives() { return Test(); } int main() { takes( Test() ); // compiles // takes( gives() ); // doesn't compile readln(); return 0; } Is this required behaviour? The compiler complains about gives() not being an lvalue, but the code doesn't seem to require it to be an lvalue. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
June 23, 2011 [Issue 6200] [GSoC] Value returned by function cannot be passed as ref const. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Cristi Cobzarenco | http://d.puremagic.com/issues/show_bug.cgi?id=6200 kennytm@gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kennytm@gmail.com --- Comment #1 from kennytm@gmail.com 2011-06-23 13:03:36 PDT --- No 'ref' does require the parameter as an lvalue, even if 'const' is present. This is different from C++. I think it's a duplicate of bug 3167. Also, the struct literal 'Test()' currently returns an lvalue, not an rvalue. See bug 5889. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
June 23, 2011 [Issue 6200] [GSoC] Value returned by function cannot be passed as ref const. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Cristi Cobzarenco | http://d.puremagic.com/issues/show_bug.cgi?id=6200 --- Comment #2 from Cristi Cobzarenco <cristi.cobzarenco@gmail.com> 2011-06-23 13:08:14 PDT --- (In reply to comment #1) > No 'ref' does require the parameter as an lvalue, even if 'const' is present. This is different from C++. I think it's a duplicate of bug 3167. > > Also, the struct literal 'Test()' currently returns an lvalue, not an rvalue. > See bug 5889. Aha, I guess you're right, I assumed that const would fix it (bug 3167 only talks about normal refs), 'in' works though. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
June 23, 2011 [Issue 6200] [GSoC] Value returned by function cannot be passed as ref const. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Cristi Cobzarenco | http://d.puremagic.com/issues/show_bug.cgi?id=6200 --- Comment #3 from kennytm@gmail.com 2011-06-23 13:11:37 PDT --- (In reply to comment #2) > (In reply to comment #1) > > No 'ref' does require the parameter as an lvalue, even if 'const' is present. This is different from C++. I think it's a duplicate of bug 3167. > > > > Also, the struct literal 'Test()' currently returns an lvalue, not an rvalue. > > See bug 5889. > > Aha, I guess you're right, I assumed that const would fix it (bug 3167 only talks about normal refs), 'in' works though. Bug 3167 does talk about 'const ref' in the later comments, e.g. http://d.puremagic.com/issues/show_bug.cgi?id=3167#c12. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
June 23, 2011 [Issue 6200] [GSoC] Value returned by function cannot be passed as ref const. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Cristi Cobzarenco | http://d.puremagic.com/issues/show_bug.cgi?id=6200 Cristi Cobzarenco <cristi.cobzarenco@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |INVALID --- Comment #4 from Cristi Cobzarenco <cristi.cobzarenco@gmail.com> 2011-06-23 13:15:13 PDT --- (In reply to comment #3) > (In reply to comment #2) > > (In reply to comment #1) > > > No 'ref' does require the parameter as an lvalue, even if 'const' is present. This is different from C++. I think it's a duplicate of bug 3167. > > > > > > Also, the struct literal 'Test()' currently returns an lvalue, not an rvalue. > > > See bug 5889. > > > > Aha, I guess you're right, I assumed that const would fix it (bug 3167 only talks about normal refs), 'in' works though. > > Bug 3167 does talk about 'const ref' in the later comments, e.g. http://d.puremagic.com/issues/show_bug.cgi?id=3167#c12. You're right again, sorry. I looked through the comments, but somehow didn't see that one. I'll mark this as invalid. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation