for文の中で複数の型の変数を宣言

g++3.3でコンパイル

#include <iostream>

int main() {
  for ({int i = 0; char c = 'a';} i < 3; i++) {
    std::cout << c << std::endl;
  }
  return 0;
}

あれ?ブロック外からブロック内の変数が見えているような….

(7/30追記)
VC++では通らなかった.forの()の中での複文を許していないのかな?
仕様的にはどうなのか解らないけど自分で調べる気が起きない…
文が書けるのなら複文も書けて当然だと思うんだけど,まぁC++だから書けなくてもあんまり驚かないかな.
そもそも文が書けると思ってるのが間違いかもしれない.