
Consider the following code. #include <string> #include <boost/container/stable_vector.hpp> #include <iostream> int main() { boost::container::stable_vector<std::string> vec; vec.reserve(10); std::cout << "capacity = " << vec.capacity() << '\n'; } On running this (on g++ and Linux), the output is: capacity = 4294967286 (that's 2^32 - 10) If replace boost::container::stable_vector with std::vector above, the output is: capacity = 10 I know it could as well have been capacity = 20, or capacity = 64 or whatever but that's still sane behavior. What capacity() returns for stable_vector seems to be (2^32 - N), N being the requested capacity. I didn't see such a definition of capacity in the docs: http://www.boost.org/doc/libs/1_56_0/doc/html/boost/container/stable_vector.... Thanks, Arindam