This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++20 status.
3315. Correct Allocator Default BehaviorSection: 16.4.4.6 [allocator.requirements] Status: C++20 Submitter: United States Opened: 2019-11-04 Last modified: 2021-02-25
Priority: 0
View other active issues in [allocator.requirements].
View all other issues in [allocator.requirements].
View all issues with C++20 status.
Discussion:
Addresses US 162/US 163
The default behavior fora.destroy
is now to call destroy_at
Proposed change: Replace "default" entry with: destroy_at(c)
The default behavior for a.construct
is now to call construct_at
Proposed change: Replace "default" entry with: construct_at(c, std::forward<Args>(args)...)
Dietmar Kühl: In Table 34 [tab:cpp17.allocator] the behavior of a.construct(c, args)
and a.destroy(c)
are described to have a default behavior of ::new ((void*)c) C(forward<Args>(args))
and c->~C()
, respectively. However, this table doesn't actually define what is happening if these operations are omitted: The behavior is provided when using an allocator is used via std::allocator_traits
and is, thus, defined by the corresponding std::allocator_traits
functions. These functions are specified in 20.2.9.3 [allocator.traits.members] paragraphs 5 and 6 to call construct_at(c, std::forward<Args>(args)
and destroy_at(p)
, respectively. The text in the table should be updated to match the actual behavior.
[2019-11 Status to Ready during Wednesday morning issue processing in Belfast.]
Proposed resolution:
This wording is relative to N4835.
Modify 16.4.4.6 [allocator.requirements], Table [tab:cpp17.allocator] "Cpp17Allocator
requirements" as indicated:
Table 34 —Cpp17Allocator
requirements [tab:cpp17.allocator] Expression Return type Assertion/note
pre-/post-condition Default…
a.construct(c, args)
(not used) Effects: Constructs an object of typeC
atc
::new ((void*)c) C( construct_at(c, std::forward<Args>(args)...)
a.destroy(c)
(not used) Effects: Destroys the object atc
c->~C() destroy_at(c)
…
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4