Prendere in considerazione il seguente codice.boost :: La funzione membro della capacità di stable_vector non restituisce la capacità assegnata
#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';
}
In esecuzione di questo (su g ++/Linux), l'uscita è:
capacità = 4.294.967,286 mila (che è 2^32-10)
Se sostituisco boost :: contenitore :: stable_vector con std :: vector sopra, l'output è:
capacità = 10
so che potrebbe anche essere stato la capacità = 20, o la capacità = 64 o qualsiasi altra cosa, ma questo è ancora un comportamento sano.
Quale capacità() restituisce per stable_vector sembra essere (2^32 - N), N è la capacità richiesta con una chiamata a reserve(). Non ho visto una tale definizione di capacità nei documenti: http://www.boost.org/doc/libs/1_56_0/doc/html/boost/container/stable_vector.html#idp33067968-bb.
Il bug ovvio è ovvio. Sembra essere introdotto in 1.54. –