最初の式は許可されているのに、2 番目の式は許可されていない理由:
void test()
{
int a;
++a = getSomeInt();
a++ = getSomeInt();
}
つまり、なぜ 2 番目のものを左辺値にすることが禁止されているのでしょうか。2 番目のものは理にかなっていますが、最初のものはそうではありません。最初のものでは、変数をインクリメントし、ここに新しい値を与えた直後に、それを失います。2番目の式ではそうではありません。なんらかの値を割り当て、その後変数をインクリメントすることは理にかなっています。