Opened 7 years ago

Closed 7 years ago

Last modified 6 years ago

#11957 closed Bugs (fixed)

static_vector::max_size() is higher than the capacity

Reported by: anonymous Owned by: Ion Gaztañaga
Milestone: To Be Determined Component: container
Version: Boost 1.59.0 Severity: Problem
Keywords: Cc:

Description

According to the documenetation, both static_vector capacity() and max_size() shall return the static_vector capacity:

static_vector public static functions

  static size_type capacity() noexcept;
    Returns container's capacity.
    Throws. Nothing.
    Complexity. Constant O(1).

  static size_type max_size() noexcept;
    Returns container's capacity.
    Throws. Nothing.
    Complexity. Constant O(1).

This makes sense since the capacity is fixed at compile time.

However it is not actually the case

$ cat svect.cpp 
#include <cstdlib>
#include <boost/container/static_vector.hpp>
#include <iostream>

int main()
{
  boost::container::static_vector<char, 42> sv;
  std::cout << "sv.size(): " << sv.size()
            << "\nsv.capacity(): " << sv.capacity()
            << "\nsv.max_size(): " << sv.max_size() << "\n";
  return (sv.max_size() == sv.capacity()) ? EXIT_SUCCESS : EXIT_FAILURE;
}
$ clang++ --std=c++11 svect.cpp  && ./a.out
sv.size(): 0
sv.capacity(): 42
sv.max_size(): 18446744073709551615
$ echo $?
1

Change History (3)

comment:1 by barthelemy@…, 7 years ago

subscribe

comment:2 by Ion Gaztañaga, 7 years ago

Resolution: fixed
Status: newclosed

comment:3 by jim.king@…, 6 years ago

Should the Milestone be set to 1.61 since this appears to have been fixed in 1.61.0 ?

Note: See TracTickets for help on using tickets.