From: Jonathan Wakely (cow_at_[hidden])
Date: 2004-08-05 10:09:35
On Thu, Aug 05, 2004 at 08:46:48AM -0600, David Abrahams wrote:
> In the constructor documentation, it seems that "Notes" is used to
> document what really are preconditions, e.g.:
> "p must be a pointer to an object that was allocated via a C++
> new expression or be 0"
> Normally, "notes" are considered to be non-normative in the
> standard. I am trying to update a document on exception safety and
> it would be a big help if all the preconditions appeared in the
> "Requires" clause.
If p is not a pointer to an object allocated with operator new then would
"delete p" not invoke undefined behaviour?
The requirements clause says:
Requirements: p must be convertible to T *. Y must be a complete type.
The expression delete p must be well-formed, must not invoke undefined
behavior, and must not throw exceptions.
So it seems to me that the notes are a non-normative restating of the
requirements. A slightly redundant repetition maybe, but not in the wrong
-- "A well-written program is its own heaven A poorly written program is its own hell" - The Tao of Programming