Section: 23.10.5 [util.dynamic.safety] Status: C++11 Submitter: BSI Opened: 2010-08-25 Last modified: 2016-02-10
Priority: Not Prioritized
View all other issues in [util.dynamic.safety].
View all issues with C++11 status.
The precondition to calling declare_no_pointers is that no bytes in the range "have been previously registered" with this call. As written, this precondition includes bytes in ranges, even after they have been explicitly unregistered with a later call to undeclare_no_pointers.
Update 23.10.5 [util.dynamic.safety] p.9:
void declare_no_pointers(char *p, size_t n);
9 Requires: No bytes in the specified range
have been previously registeredwith declare_no_pointers(). If the specified range is in an allocated object, then it must be entirely within a single allocated object. The object must be live until the corresponding undeclare_no_pointers() call. [..]