Matt Austern
                                                              24 Mar 2004

Resolutions to unordered associative container issues

6.5 Hashing strings

In 6.3.3, change "for any valid set of charT, traits, and Alloc" to "for any valid set of charT, traits, and Alloc such that charT is an integer type."

6.7 Exception safety of unordered associative container operations

Add the following exception guarantee:

"For unordered associative containers, if an exception is thrown from within a rehash() function other than by the container's hash function or comparison function, the rehash() function has no effect."

6.8 Equality-comparability of unordered associative containers

To section 6.2.1, Unordered associative container requirements, add:

Unordered associative containers conform to the requirements for Containers (C++ Standard, 23.1, Container requirements), except that the following expressions are not required to be valid, where a and b denote values of a type X, and X is an unordered associative container class:

unsupported expressions
a == b
a != b
a < b
a > b
a <= b
a >= b

6.11 Rationale for rehash precondition

Page 117 in requirements table  for a.rehash(n)

    Pre: n > a.size() /
    Changes the number of buckets
    so that it is at least n.

    a.bucket_count() > a.size() / a.max_load_factor().
    a.bucket_count() >= n. 

6.13 When may an implementation change the bucket count?

In clause 6.3.1, after the first sentence of the last paragraph, add: "The insert members shall not affect the validity of iterators if (N+n) < z * B, where N' is the container's size, n is the number of elements inserted, B is the container's bucket count, and z is the container's maximum load factor."