Section: 23.2.3 [container.requirements.dataraces] Status: C++14 Submitter: Jonathan Wakely Opened: 2012-10-17 Last modified: 2016-01-28
Priority: Not Prioritized
View all other issues in [container.requirements.dataraces].
View all issues with C++14 status.
Discussion:
23.2.3 [container.requirements.dataraces]/2 says "[…] implementations are
required to avoid data races when the contents of the contained object in different
elements in the same sequence, excepting vector<bool>
, are modified
concurrently."
This should say "same container" instead of "same sequence", to avoid the interpretation that it only applies to sequence containers.
[2013-03-15 Issues Teleconference]
Moved to Tentatively Ready.
[2013-04-20 Bristol]
Proposed resolution:
This wording is relative to N3376.
Change 23.2.3 [container.requirements.dataraces]/2 as indicated:
-2- Notwithstanding (16.4.6.10 [res.on.data.races]), implementations are required to avoid data races when the contents of the contained object in different elements in the same
-3- [Note: For asequencecontainer, exceptingvector<bool>
, are modified concurrently.vector<int> x
with a size greater than one,x[1] = 5
and*x.begin() = 10
can be executed concurrently without a data race, butx[0] = 5
and*x.begin() = 10
executed concurrently may result in a data race. As an exception to the general rule, for avector<bool> y, y[0] = true
may race withy[1] = true
. — end note ]