Stefan Strasser wrote:
Zitat von Klaim - Joël Lamotte wrote:
So it's a VS only bug...
Someone confirmed the bug in the ticket but say it's fixed in trunk.
it must fail on all compilers using 1.53, as it's because of out-of-bounds vector access.
is it intentional that container::vector::operator[] doesn't assert n < size()?
would have caught this bug.
The trunk version works for me on the Darwin toolset (MacOSX gcc). I wrote a different test program:
#include
#include
#include
int test_main(int argc, char** argv)
{
boost::container::stable_vector<int> values;
values.emplace_back(42);
boost::container::stable_vector<int>::const_iterator value_itr = (
values.begin()
);
int const& value_at = values.at(0);
int const& indexed_value = values[0];
int const& back_value = values.back();
BOOST_CHECK(boost::addressof(*value_itr) == boost::addressof(value_at));
BOOST_CHECK(
boost::addressof(*value_itr) == boost::addressof(indexed_value)
);
BOOST_CHECK(boost::addressof(*value_itr) == boost::addressof(back_value));
BOOST_CHECK(boost::addressof(value_at) == boost::addressof(indexed_value));
BOOST_CHECK(boost::addressof(value_at) == boost::addressof(back_value));
BOOST_CHECK(
boost::addressof(indexed_value) == boost::addressof(back_value)
);
return 0;
}
HTH,
Cromwell D. Enage