This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 110c. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
[Voted into the WP at the March, 2011 meeting as part of paper N3262.]
_N4885_18.104.22.168.4 [basic.stc.dynamic.safety] paragraph 4 only prohibits the dereferencing and deallocation of non-safely-derived pointers. This is insufficient. Explicit deallocation of storage is described as rendering invalid all pointers to that storage, with the result that all operations on such a pointer value causes undefined behavior (22.214.171.124.3 [basic.stc.dynamic.deallocation] paragraph 4). The same should be true if the storage pointed to by a non-safely-derived pointer is garbage collected. In particular, the promise of objects having distinct addresses (6.7.2 [intro.object] paragraph 6) should not apply if one of those objects is designated by a non-safely-derived pointer.
Proposed resolution (November, 2010) [SUPERSEDED]:
Change _N4885_126.96.36.199.4 [basic.stc.dynamic.safety] paragraph 4 as follows:
...Alternatively, an implementation may have strict pointer safety, in which case,
ifa pointer value that is not a safely-derived pointer value is dereferenced or deallocated, andthe referenced complete object is of dynamic storage duration and has notpreviously been declared reachable (_N4700_.23.11.2 [util.smartptr]) , the behavior is undefined. [Note: thisis true even if the unsafely-derived pointer value might compare equal to some safely-derived pointer value. —end note] It is implementation defined...