This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 118e. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2025-11-05


1114. Incorrect use of placement new in example

Section: 6.8.4  [basic.life]     Status: C++11     Submitter: GB     Date: 2010-08-02

[Voted into the WP at the November, 2010 meeting.]

N3092 comment GB 18

The example in 6.8.4 [basic.life] paragraph 9 reads,

 struct B { B(); ~B(); }; const B b; void h() { b.~B(); new (&b) const B; // undefined behavior } 

Assuming that the placement new is intended to use the operator defined in the Standard library, the new-expression is ill-formed, because there is no implicit conversion from “pointer to const B” to void*.

Proposed resolution (August, 2010):

Change the example in 6.8.4 [basic.life] paragraph 9 as follows:

 ... new (const_cast<B *>(&b)) const B; // undefined behavior ...