basic_string<>::swap
semantics ignore allocatorsSection: 27.4.3.2 [string.require] Status: Resolved Submitter: Robert Shearer Opened: 2012-04-13 Last modified: 2018-11-25
Priority: 3
View all other issues in [string.require].
View all issues with Resolved status.
Discussion:
In C++11, basic_string
is not described as a "container", and is not governed by the allocator-aware
container semantics described in sub-clause 23.2 [container.requirements]; as a result, and
requirements or contracts for the basic_string
interface must be documented in Clause
27 [strings].
swap
member function with no requirements, and
with guarantees to execute in constant time without throwing. Fulfilling such a contract is not reasonable
in the presence of unequal non-propagating allocators.
In contrast, 23.2.2 [container.requirements.general] p7 declares the behavior of member swap
for containers with unequal non-propagating allocators to be undefined.
Resolution proposal:
Additional language from Clause 23 [containers] should probably be copied to Clause
27 [strings]. I will refrain from an exactly recommendation, however, as I am raising further
issues related to the language in Clause 23 [containers].
[2013-03-15 Issues Teleconference]
Moved to Open.
Alisdair has offered to provide wording.
Telecon notes that 23.2.2 [container.requirements.general]p13 says that string
is an
allocator-aware container.
Resolved by the adoption of P1148 in San Diego.
Proposed resolution: