and in the reply by Dietmar Kuehl, in which he quotes the relevant
portion of the C++ Standard:
http://groups.google.com/group/comp.lang.c++/msg/71a9fecc4f5d7d57
I tried to file a bug report at
http://lab.msdn.microsoft.com/productfeedback/default.aspx
but they only let you submit bug reports for VC++ 2005, which I am
unable to install at the moment, and I am not sure if the bug is present
in the newer version.
Can anybody confirm if this bug is present in the newer version?
--
Marcus Kwok
This is the output when compiled with VC2005
During compilation:
warning C4351: new behavior: elements of array 'Init::ai' will be default
initialized
warning C4351: new behavior: elements of array 'Init::bi' will be default
initialized
When running
UnInit:
ai = {-858993460, -858993460, -858993460, -858993460, }
bi = {204, 204, 204, 204, }
Init:
ai = {0, 0, 0, 0, }
bi = {0, 0, 0, 0, }
--
Kind regards,
Bruno van Dooren
bruno_nos_pa...@hotmail.com
Remove only "_nos_pam"
I see, so they fixed it in the new version. Thanks for checking this
for me, and I will not file a bug report.
--
Marcus Kwok
Funny enough the following change works as expected:
struct Init_POD
{
int ai[Size];
bool bi[Size];
};
class Init {
Init_POD pods;
public:
Init() : pods() { }
friend std::ostream& operator<<(std::ostream& o, const Init& i);
};
std::ostream&
operator<<(std::ostream& o, const Init& in)
{
o << "Init:\n";
o << "ai = {";
std::copy(in.pods.ai, in.pods.ai + Size, std::ostream_iterator<int>(o,
", "));
o << "\b\b}\n";
o << "bi = {";
std::copy(in.pods.bi, in.pods.bi + Size, std::ostream_iterator<bool>(o,
", "));
o << "\b\b}";
return o;
}
Regards,
Patrick
Hmm, that is interesting! Thanks.
--
Marcus Kwok