Date
2016-03-01.20:49:17
Message id
7997

Content

Proposed resolution:

This wording is relative to N3936.

  1. Change [associative.reqmts] Table 102 as indicated (Editorial note: For "expression" X::key_compare "defaults to" is redundant with the class definitions for map/etc.):

    Table 102 — Associative container requirements
    Expression Return type Assertion/note pre-/post-condition Complexity
    X::key_compare Compare defaults to less<key_type>
    Requires: key_compare is CopyConstructible.
    compile time
    X(c)
    X a(c);
    Requires: key_compare is CopyConstructible.
    Effects: Constructs an empty container. Uses a copy of c as a comparison object.
    constant
    X(i,j,c)
    X a(i,j,c);
    Requires: key_compare is CopyConstructible.
    value_type is EmplaceConstructible into X from *i.
    Effects: Constructs […]
    […]
  2. Change [unord.req] Table 103 as indicated:

    Table 103 — Unordered associative container requirements (in addition to container)
    Expression Return type Assertion/note pre-/post-condition Complexity
    X::key_equal Pred Requires: Pred is CopyConstructible.
    Pred shall be a binary predicate that takes two arguments of type Key.
    Pred is an equivalence relation.
    compile time
    X(n, hf, eq)
    X a(n, hf, eq);
    X Requires: hasher and key_equal are CopyConstructible.
    Effects: Constructs […]
    […]
    X(n, hf)
    X a(n, hf);
    X Requires: hasher is CopyConstructible and
    key_equal is DefaultConstructible
    Effects: Constructs […]
    […]
    X(i, j, n, hf, eq)
    X a(i, j, n, hf, eq);
    X Requires: hasher and key_equal are CopyConstructible.
    value_type is EmplaceConstructible into X from *i.
    Effects: Constructs […]
    […]
    X(i, j, n, hf)
    X a(i, j, n, hf);
    X Requires: hasher is CopyConstructible and
    key_equal is DefaultConstructible
    value_type is EmplaceConstructible into X from *i.
    Effects: Constructs […]
    […]