Re: Type cast problem with VC++ 2005 Express Edition
Tim Roberts wrote:
"aslan" <aslanski2002@yahoo.com> wrote:
OK. Tim Roberts was talking about MS STL implementation whereas I use SGI
STL implementation so I didn't notice it then.
I'm not convinced. The STL implementation in VC++6 was written by PJ
Plauger and contains HP's copyright. HP and SGI cooperated on STL.
Here's a way to tell. Try to compile this:
std::vector<bool> vb;
vb.resize(32);
bool * pb = &vb[0];
If that compiles, then your implementation of STL does not have this
optimization, and the vector probably occupies 32 bytes. If that gets a
compile-time error, then your STL has the same optimization as
Microsoft's, and the vector occupies 4 bytes.
Just to put that into historic context: The STL doesn't have a
specialisation of vector<bool>. In the STL, vector<bool> behaves just like
any other vector. What it does have is a vector-like container (bit_vector)
that operates on a sequence of bits.
Now, the C++ standard library does require a specialisation for
std::vector<bool> and that it behave (more or less) like STL's bit_vector.
I seem to remember a class being part of the standard that actually stored
bool objects like a vector, i.e. which then behaves like STL's vector<bool>
again, but I'm not sure about that.
In any case, talking about different STLs and meaning different
implementations of the C++ standard library is what only adds to the
confusion. They are not the same and not even interchangeable, e.g. the STL
doesn't include IOStreams, which form a major part of the C++ standard
library.
Uli
--
C++ FAQ: http://parashift.com/c++-faq-lite
Sator Laser GmbH
Gesch??ftsf??hrer: Thorsten F??cking, Amtsgericht Hamburg HR B62 932