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