Простейшая, в общем, программа...
#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) Что говорит по этому поводу стандарт? Это - нормально или нет?