>>34
> (かつての)i0の値とi0本体とはもう別物である、と思ってしまいました。
それを実現したい場合は
cout << i0 << ", ";
cout << ++i0 << endl;
こうするしかないね。
簡単に言うと
一つの式の中でiの値が変化する->変化する場所はたった1ヵ所のみでなければならず、さらにその変化後のiの値を取得する目的以外でiを参照してはならない。
例 cout << ++i0; はOK
  i++*i++; はダメ。
  ++i*i;  もダメ。
一つの式の中でiの値が変化しない->何回参照してもok
例 cout << i0 << i0 << i0;はOK