Boost logo

Boost :

Subject: [boost] [Review] Boost.Contract Review Period Extended
From: Dave Abrahams (dave_at_[hidden])
Date: 2012-09-02 13:12:40

We've had lots of good discussion, and gotten three votes so far, but
for a library of this scope I would like to see more. Therefore, we're
extending the review period through Sept 7th. Please take the time to
look at it, and *please vote for or against acceptance*. As noted
below, everyone who looks at the library is qualified to vote, and every
vote is valuable.



,----[ Important Notes ]
| - Please post your review to the Boost Developers' list
| (
| - Please begin your review's subject line with "[Review:Contract]"
| - Please do not post your review or discussion as a reply to this
| message.
| - Please feel free to note any individual issues in the issue
| tracker at
| (you'll need to log in at Sourceforge to add a ticket) and make
| reference to them from your review.
| - Please see below for *further* important notes


Boost.Contract implements Contract Programming (a.k.a., Design by
Contracts) for C++. In addition, the library implements virtual
specifiers, concept checking, and named parameters.


All N1962 requirements and Eiffel features are supported by the
library, among others:

1) Support for preconditions, postconditions, class invariants, block
invariants, and loop variants.
2) Subcontract derived classes (with support for pure virtual
functions and multiple inheritance).
3) Access expression old values and function return value in postconditions.
4) Optional compilation and checking of preconditions, postconditions,
class invariants, block invariants, and loop variants.
5) Customizable actions on contract assertion failure (terminate by
default but it can throw, exit, etc).

This library is implemented for C++03 and it does not require C++11.
Obviously, if the library is accepted, all macros will be prefixed by
BOOST_... and other symbols will go under the boost::... namespace.

Potential Interactions with Existing Boost Libraries
This submission potentially interacts with the following existing
Boost libraries:

* parameter -
* static_assert -
* MPL -
* Concept -
Reviewers should consider these potential interactions.

What to include in Review Comments
- Keep your criticism constructive. Constructive criticism usually
  comes with specific suggestions for improvement.
- If you identify problems along the way, please note if they are minor,
  serious, or showstoppers.
- Please *do* vote on whether the library should be accepted. Everyone
  who takes the time to look at the library is qualified to vote, and
  every vote is valuable.
- Other questions you might want to answer in your review:
  * What is your evaluation of the design?
  * What is your evaluation of the implementation?
  * What is your evaluation of the documentation?
  * What is your evaluation of the potential usefulness of the library?
  * Did you try to use the library? With what compiler? Did you have any problems?
  * How much effort did you put into your evaluation? A glance? A quick reading? In-depth study?
  * Are you knowledgeable about the problem domain?

Dave Abrahams
BoostPro Computing                  Software Development        Training             Clang/LLVM/EDG Compilers  C++  Boost

Boost list run by bdawes at, gregod at, cpdaniel at, john at