[container][stable_vector] What does reserve() do for stable_vector

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

El 19/04/2015 a las 10:06, Arindam Mukherjee escribió:
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:
It's clearly a bug. The surprising part is that it was introduced a long time ago. I just received a a merged a pull request: https://github.com/boostorg/container/pull/26 Thanks for reporting. Ion
participants (2)
-
Arindam Mukherjee
-
Ion Gaztañaga