Простейшая, в общем, программа... #include <iostream> #include <algorithm> #include <iterator> class C { private: int i; public: C():i(0){} C(int i_):i(i_){} friend std::ostream& operator<<(std::ostream&,const C&); }; std::ostream& operator<<(std::ostream& ostr,const C& c) { return ostr << c.i; } int main() { { C* mas = new C[10](-1); std::copy(mas,mas+10,std::ostream_iterator<C>(std::cout," ")); std::cout << std::endl; delete [] mas; } { int* mas = new int[10](1); std::copy(mas,mas+10,std::ostream_iterator<int>(std::cout," ")); std::cout << std::endl; delete [] mas; } return 0; } А вот результат ее работы: -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 Почему так получилось - в общем, понятно. Вопросы: 1) это во всех компиляторах С++ так, или только в gnu c++? 2) Что говорит по этому поводу стандарт? Это - нормально или нет?