This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++11 status.
Section: 20.2.9.3 [allocator.traits.members] Status: C++11 Submitter: Howard Hinnant Opened: 2009-12-10 Last modified: 2016-01-28
Priority: Not Prioritized
View all other issues in [allocator.traits.members].
View all issues with C++11 status.
Discussion:
LWG issue 402 added "::" to the call to new within allocator::construct. I suspect we want to retain that fix.
[ 2009-12-13 Moved to Tentatively Ready after 7 positive votes on c++std-lib. ]
Proposed resolution:
Change 16.4.4.6 [allocator.requirements], table 40 "Allocator requirements":
Table 40 — Allocator requirements Expression Return type Assertion/note
pre-/post-conditionDefault a.construct(c,args) (not used) Effect: Constructs an object of type C at c ::new ((void*)c) C(forward<Args>(args)...)
Change 20.2.9.3 [allocator.traits.members], p4:
template <class T, class... Args> static void construct(Alloc& a, T* p, Args&&... args);4 Effects: calls a.construct(p, std::forward<Args>(args)...) if that call is well-formed; otherwise, invokes ::new (static_cast<void*>(p)) T(std::forward<Args>(args)...).