vectorってダメなのね

すばるさんのつぶやき
を見てstd::vectorはill-formedだということを知った。

まずideoneでgccではダメ(コンパイルエラー)だということを確認し、直後に同じくすばるさんのつぶやきでも言ってたけれどVC++ではどうなるのかを自分で確認してみたく試した。

結果は通った
constなのに書き換えも可能で四則演算も可能。試したコードは

std::vector<const int> vect; 
for(int i=0;i<N;++i)vect.push_back(i);
...
for(int i=0;i<N;++i)vect[i] *= i * ...

みたいな感じ
どうやらstd::vector は std::vectorと同じように扱われるみたいです。これコードそのまま見た人は別の結果を思い浮かべそう。ていうかconstの威力を知っている人からするとこういうの怖いよね....VC++だめじゃん......

眠いので変なこと書いているかも。寝ます。