This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++14 status.

### 2300. [CD] Redundant sections for `map` and `multimap` members should be removed

Section: 22.4.4 [map], 22.4.5 [multimap] Status: C++14 Submitter: Daniel Krügler Opened: 2013-09-25 Last modified: 2017-06-15

Priority: Not Prioritized

View all other issues in [map].

View all issues with C++14 status.

Discussion:

Addresses ES 17

Sections are redundant with general associative container requirements at 22.2.6 [associative.reqmts], Table 102.

Suggested action:

Delete sections.

[2013-09-25 Daniel provides resolution suggestion]

[2013-09-25 Chicago]

Daniel's wording is good, move to Immediate to resolve NB comment.

[2013-09-29 Chicago]

Accept for Working Paper

Proposed resolution:

This wording is relative to N3691.

1. Change the header `<map>` synopsis, 22.4.4.1 [map.overview] p2 as indicated:

   >     // 23.4.4.5, map operations:
   >     iterator find(const key_type& x);
   >     const_iterator find(const key_type& x) const;
   >     template <class K> iterator find(const K& x);
   >     template <class K> const_iterator find(const K& x) const;

2. Delete the complete sub-clause [map.ops]:

   23.4.4.5 map operations [map.ops]

   >     iterator find(const key_type& x);
   >     const_iterator find(const key_type& x) const;
   >     iterator lower_bound(const key_type& x);
   >     const_iterator lower_bound(const key_type& x) const;
   >     iterator upper_bound(const key_type& x);
   >     const_iterator upper_bound(const key_type &x) const;
   >     pair<iterator, iterator>
   >       equal_range(const key_type &x);
   >     pair<const_iterator, const_iterator>
   >       equal_range(const key_type& x) const;

   > > -1- The `find`, `lower_bound`, `upper_bound` and `equal_range` member functions each have two versions, one const and the other non-const. In each case the behavior of the two functions is identical except that the const version returns a `const_iterator` and the non-const version an `iterator` (23.2.4).

3. Delete the complete sub-clause [multimap.ops]:

   23.4.5.4 multimap operations [multimap.ops]

   >     iterator find(const key_type &x);
   >     const_iterator find(const key_type& x) const;

   >     iterator lower_bound(const key_type& x);
   >     const_iterator lower_bound(const key_type& x) const;

   >     pair<iterator, iterator>
   >       equal_range(const key_type &x);
   >     pair<const_iterator, const_iterator>
   >       equal_range(const key_type& x) const;

   > > -1- The `find`, `lower_bound`, `upper_bound` and `equal_range` member functions each have two versions, one const and one non-const. In each case the behavior of the two versions is identical except that the const version returns a `const_iterator` and the non-const version an `iterator` (23.2.4).