Article View: comp.std.c++
Article #1053Re: Assignment operators return lvalues / classes and types
From: Reid Ellis
Date: Sat, 27 Apr 1991 16:19
Date: Sat, 27 Apr 1991 16:19
43 lines
1479 bytes
1479 bytes
Martin Hitz <hitz@sim5.csi.uottawa.ca> writes:
>struct X { int i; };
>X f() { X x; return x; }
>main()
>{
> int i = f().i; // OK
> X x;
> f() = x; // !OK
>}
>
>f() does NOT return an lvalue
I would have thought that f() *does* return an lvalue, albeit in the
form of a temporary variable. Note that the following *does* work:
#include <iostream.h>
struct X { int i; };
X f() { X x; x.i=12; return x; }
main()
{
X x;
x.i = 23;
X & xref = f();
cout << "xref is " << xref.i << '\n';
xref = x;
cout << "x is " << x.i << ", while xref is now " << xref.i << '\n';
}
The output from this is
xref is 12
x is 23, while xref is now 23
So it would seem that your [and my!] version of cfront is broken..
Reid
--
Reid Ellis 1 Trefan Street Apt. E, Toronto ON, M5A 3A9
rae@utcs.toronto.edu || rae@alias.com
CDA0610@applelink.apple.com || +1 416 362 9181 [work]
Technical Details
Message-ID:
<1991Apr27.161946.953@alias.com>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!torsqnt!geac!alias!raeReferences:
<950@edg1.UUCP> <1991Apr24.184018.23427@kestrel.edu> <1991Apr25.030006.5849@csi.uottawa.ca>Show Full Headers
Complete Article Headers
Newsgroups: comp.std.c++ Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!torsqnt!geac!alias!rae From: rae@alias.com (Reid Ellis) Subject: Re: Assignment operators return lvalues / classes and types Message-ID: <1991Apr27.161946.953@alias.com> Keywords: assignment, lvalue, class, type Sender: news@alias.com (USENET News) Organization: Alias Research, Inc. Toronto ON Canada References: <950@edg1.UUCP> <1991Apr24.184018.23427@kestrel.edu> <1991Apr25.030006.5849@csi.uottawa.ca> Date: Sat, 27 Apr 91 16:19:46 GMT