Created on 2008-06-03.00:00:00 last changed 171 months ago
Proposed resolution:
Change [container.requirements] p. 3:
Objects stored in these components shall be constructed using construct_element (20.6.9), unless otherwise specified. For each operation that inserts an element of type T into a container (insert, push_back, push_front, emplace, etc.) with arguments args... T shall be ConstructibleAsElement, as described in table 88. [Note: If the component is instantiated with a scoped allocator of type A (i.e., an allocator for which is_scoped_allocator<A>::value is true), then construct_element may pass an inner allocator argument to T's constructor. -- end note]
Change [vector.bool]/p2:
Unless described below, all operations have the same requirements and semantics as the primary vector template, except that operations dealing with the bool value type map to bit values in the container storage, and construct_element ([container.requirements]) is not used to construct these values.
Move [template.bitset] to clause 20.
[container.requirements] p. 3 says:
Objects stored in these components shall be constructed using construct_element (20.6.9). For each operation that inserts an element of type T into a container (insert, push_back, push_front, emplace, etc.) with arguments args... T shall be ConstructibleAsElement, as described in table 88. [Note: If the component is instantiated with a scoped allocator of type A (i.e., an allocator for which is_scoped_allocator<A>::value is true), then construct_element may pass an inner allocator argument to T's constructor. -- end note]
However vector<bool, A> ([vector.bool]) and bitset<N> ([template.bitset]) store bits, not bools, and bitset<N> does not even have an allocator. But these containers are governed by this clause. Clearly this is not implementable.
History | |||
---|---|---|---|
Date | User | Action | Args |
2010-10-21 18:28:33 | admin | set | messages: + msg4020 |
2008-06-03 00:00:00 | admin | create |