...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::contract::public_function — Program contracts for public functions that are not static, not virtual, and do not not override.
// In header: <boost/contract/public_function.hpp> template<typename Class> specify_precondition_old_postcondition_except public_function(Class * obj);
This is used to specify preconditions, postconditions, exception guarantees, old value copies at body, and check class invariants for public functions that are not static, not virtual, and do not override:
class u { friend class boost::contract::access; void invariant() const { // Optional (as for static and volatile). BOOST_CONTRACT_ASSERT(...); ... } public: void f(...) { boost::contract::old_ptr<old_type> old_var; boost::contract::check c = boost::contract::public_function(this) .precondition([&] { // Optional. BOOST_CONTRACT_ASSERT(...); ... }) .old([&] { // Optional. old_var = BOOST_CONTRACT_OLDOF(old_expr); ... }) .postcondition([&] { // Optional. BOOST_CONTRACT_ASSERT(...); ... }) .except([&] { // Optional. BOOST_CONTRACT_ASSERT(...); ... }) ; ... // Function body. } ... };
For optimization, this can be omitted for public functions that do not have preconditions, postconditions and exception guarantees, within classes that have no invariants.
See Also:
Parameters: |
|
||
Template Parameters: |
|
||
Returns: |
The result of this function must be explicitly assigned to a variable of type |