981. Unordered container requirements should add initializer_list support

Section: 23.2.8 [unord.req] Status: C++11 Submitter: Daniel Krügler Opened: 2009-02-08 Last modified: 2016-01-28

Priority: Not Prioritized

View other active issues in [unord.req].

View all other issues in [unord.req].

View all issues with C++11 status.

Discussion:

Refering to N2800 all container requirements tables (including those for associative containers) provide useful member function overloads accepting std::initializer_list as argument, the only exception is Table 87. There seems to be no reason for not providing them, because 23.5 [unord] is already initializer_list-aware. For the sake of library interface consistency and user-expectations corresponding overloads should be added to the table requirements of unordered containers as well.

[ Batavia (2009-05): ]

We agree with the proposed resolution.

Move to Tentatively Ready.

Proposed resolution:

In 23.2.8 [unord.req]/9 insert:

... [q1, q2) is a valid range in a, il designates an object of type initializer_list<value_type>, t is a value of type X::value_type, ...

In 23.2.8 [unord.req], Table 87 insert:

Table 87 - Unordered associative container requirements (in addition to container)
Expression Return type Assertion/note
pre-/post-condition
Complexity
X(i, j)
X a(i, j)
X ... ...
X(il) X Same as X(il.begin(), il.end()). Same as X(il.begin(), il.end()).
... ... ... ...
a = b X ... ...
a = il X& a = X(il); return *this; Same as a = X(il).
... ... ... ...
a.insert(i, j) void ... ...
a.insert(il) void Same as a.insert(il.begin(), il.end()). Same as a.insert(il.begin(), il.end()).