2199. unordered containers are required to have an initial max load factor of 1.0

Section: 23.2.8 [unord.req] Status: NAD Submitter: Alisdair Meredith Opened: 2012-10-09 Last modified: 2016-11-21

Priority: 3

View other active issues in [unord.req].

View all other issues in [unord.req].

View all issues with NAD status.

Discussion:

The default constructor, allocator-aware constructor, and range-based constructors for the unordered containers do not offer a means to control the initial max_load_factor, so the standard mandates the value 1.0. This seems overly restrictive, as there is plenty of research suggesting a value between 0.5 and 1.0 is more often optimal for unique-key containers, and perhaps a slightly higher value might be appropriate for multi-containers.

Rather than guess at the appropriate max_load_factor, it seems reasonable that the standard should allow vendors to pick a value at their discretion, with perhaps a note of advice. It is less clear whether the default value should be implementation-defined or unspecified, given the ease of a user determining this by querying this attribute immediately after construction.

[2013-03-15 Issues Teleconference]

Moved to Open.

Alisdair to provide wording.

Marshall: It seems to me that what you really want is to be able to pass a max load factor in the constructor, but that's a different issue.

Alisdair agrees in principle, but concerned with adding yet more constructors to these classes.

[2016-11-12, Issaquah]

NAD - if someone wants to come back with a paper exploring design alternatives, we can re-open.

Proposed resolution: