This page is a snapshot from the LWG issues list, see theLibrary Active Issues List for more information and the meaning ofC++14 status.
Allocator requirements should includeCopyConstructibleSection: 16.4.4.6[allocator.requirements]Status:C++14Submitter: Jonathan WakelyOpened: 2011-08-30Last modified: 2016-01-28
Priority:Not Prioritized
View otheractive issues in [allocator.requirements].
View all otherissues in [allocator.requirements].
View all issues withC++14 status.
Discussion:
As discussed in c++std-lib-31054 and c++std-lib-31059, theAllocatorrequirements implicitly requireCopyConstructible becausea.select_on_container_copy_construction() andcontainer.get_allocator() both return a copy by value, but therequirement is not stated explicitly anywhere.
CopyConstructible.[2012, Kona]
Move to Ready.
[2012, Portland: applied to WP]
Proposed resolution:
This wording is relative to the FDIS.
Change Table 28 — Allocator requirements in 16.4.4.6[allocator.requirements]:
| Expression | Return type | Assertion/note pre-/post-condition | Default |
|---|---|---|---|
X a1(a); | Shall not exit via an exception. post: a1 == a | ||
… | |||
X a1(move(a)); | Shall not exit via an exception. post: a1 equals the prior valueof a. | ||
Change 16.4.4.6[allocator.requirements] paragraph 4:
An allocator type
Xshall satisfy the requirements ofCopyConstructible(16.4.4.2[utility.arg.requirements]). TheX::pointer,X::const_pointer,X::void_pointer, andX::const_void_pointertypes shall satisfy the requirements ofNullablePointer(16.4.4.4[nullablepointer.requirements]). No constructor, comparison operator, copy operation, move operation, or swap operation on these types shall exit via an exception.X::pointerandX::const_pointershall also satisfy the requirements for a random access iterator (24.3[iterator.requirements]).