Why isn't ++x an lvalue in D?
Bill Baxter
wbaxter at gmail.com
Thu Jan 8 19:59:16 PST 2009
2009/1/9 Weed <resume755 at mail.ru>:
> Bill Baxter пишет:
>> Another thread just reminded me of something I use frequently in C++
>> that doesn't work in D because ++x is not an lvalue:
>>
>> int x,N;
>> ...
>> ++x %= N;
>>
>> So is there some deep reason for not making it an lvalue like in C++?
>>
>
> ++x is x+=1 in D:
>
> void main() {
> int i =3;
> int N =2;
> (i+=1) %= N;
> }
>
>
> Error: i += 1 is not an lvalue.
>
> C++:
>
> int main()
> {
> int i = 2;
> int N = 3;
> i+1 %= N;
>
> return 0;
> }
>
> error: lvalue required as left operand of assignment
>
What does C++ do if you use (i+=1) %= N instead of (i+1)? Doesn't +=
also return an lvalue in C++?
--bb
More information about the Digitalmars-d
mailing list