From 310d8eaf10be14b6a9457fd1284bab761d50c8e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ion=20Gazta=C3=B1aga?= Date: Wed, 24 Feb 2016 14:45:44 +0100 Subject: [PATCH] Fixed Trac #11957: "static_vector::max_size() is higher than the capacity" --- doc/container.qbk | 1 + include/boost/container/static_vector.hpp | 3 +++ test/static_vector_test.cpp | 2 ++ 3 files changed, 6 insertions(+) diff --git a/doc/container.qbk b/doc/container.qbk index 152e5f1..8f1a54b 100644 --- a/doc/container.qbk +++ b/doc/container.qbk @@ -1221,6 +1221,7 @@ use [*Boost.Container]? There are several reasons for that: * [@https://svn.boost.org/trac/boost/ticket/11856 Trac #11856 : ['"pool_resource.cpp error: declaration changes meaning"]]. * [@https://svn.boost.org/trac/boost/ticket/11866 Trac #11866 : ['"small_vector does not have range constructor"]]. * [@https://svn.boost.org/trac/boost/ticket/11867 Trac #11867 : ['"small_vector should have constructor and assignment operator taking other small_vector"]]. + * [@https://svn.boost.org/trac/boost/ticket/11957 Trac #11957 : ['"static_vector::max_size() is higher than the capacity"]]. * [@https://svn.boost.org/trac/boost/ticket/12014 Trac #12014 : ['"boost::container::set can not insert const (ref) range"]]. * [@https://github.com/boostorg/container/pull/33 GitHub #33: ['Make sure std::string constructor is available]]. diff --git a/include/boost/container/static_vector.hpp b/include/boost/container/static_vector.hpp index 77ea140..a37c165 100644 --- a/include/boost/container/static_vector.hpp +++ b/include/boost/container/static_vector.hpp @@ -58,6 +58,9 @@ class static_storage_allocator static const std::size_t internal_capacity = N; + std::size_t max_size() const + { return N; } + typedef boost::container::container_detail::version_type version; BOOST_CONTAINER_FORCEINLINE friend bool operator==(const static_storage_allocator &, const static_storage_allocator &) BOOST_NOEXCEPT_OR_NOTHROW diff --git a/test/static_vector_test.cpp b/test/static_vector_test.cpp index dd9d75f..3077866 100644 --- a/test/static_vector_test.cpp +++ b/test/static_vector_test.cpp @@ -35,6 +35,7 @@ void test_ctor_ndc() static_vector s; BOOST_TEST_EQ(s.size() , 0u); BOOST_TEST(s.capacity() == N); + BOOST_TEST(s.max_size() == N); BOOST_TEST_THROWS( s.at(0u), std::out_of_range ); } @@ -44,6 +45,7 @@ void test_ctor_nc(size_t n) static_vector s(n); BOOST_TEST(s.size() == n); BOOST_TEST(s.capacity() == N); + BOOST_TEST(s.max_size() == N); BOOST_TEST_THROWS( s.at(n), std::out_of_range ); if ( 1 < n ) {