Re: returning lvalue in C vs C++
- From: Ben C <spamspam@xxxxxxxxx>
- Date: 29 Mar 2006 23:40:10 GMT
On 2006-03-29, Ben C <spamspam@xxxxxxxxx> wrote:
On 2006-03-29, Phlip <phlip2005@xxxxxxxxx> wrote:
Ben C wrote:
struct thing
{
int x;
};
struct thing f(void)
{
struct thing ret = {100};
return ret;
}
int g(void)
{
return 10;
}
int main(void)
{
#if 0
g() = 4; /* "invalid lvalue" in C and C++ */
#endif
f().x = 200; /* "invalid lvalue" in C, but not in C++ apparently */
Consider the general scheme of C++, and specifically its overloaded
operators.
x.operator=() (figuratively) could have a side-effect that your code depends
on. So regardless where 'thing' appears, thing.x is accessible as an
lvalue.
It would be thing.operator=() but I see the point.
Sorry, no it wouldn't, you were right. It's x's operator= we'd be
calling.
But x is an int, so if f().x = 200 works on that basis, why not g() = 4?
.
- Follow-Ups:
- Re: returning lvalue in C vs C++
- From: Phlip
- Re: returning lvalue in C vs C++
- From: Kai-Uwe Bux
- Re: returning lvalue in C vs C++
- References:
- returning lvalue in C vs C++
- From: Ben C
- Re: returning lvalue in C vs C++
- From: Phlip
- Re: returning lvalue in C vs C++
- From: Ben C
- returning lvalue in C vs C++
- Prev by Date: Re: Cannot understand the following codes
- Next by Date: Re: Subtract smaller or larger number from x?
- Previous by thread: Re: returning lvalue in C vs C++
- Next by thread: Re: returning lvalue in C vs C++
- Index(es):
Relevant Pages
|