You are making assumptions about the vector<T>::iterator == T* This is no longer the case. vector<float> a(1,0); float *b = a.begin(); should be: vector<float> a(1,0); vector<float>::iterator b = a.begin(); Please post usage questions like this to the libstdc++ list, not gcc-bugs. -benjamin