...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 static public functions.
// In header: <boost/contract/public_function.hpp> template<typename Class> specify_precondition_old_postcondition_except public_function();
This is used to specify preconditions, postconditions, exception guarantees, old value copies at body, and check static class invariants for static public functions:
class u { friend class boost::contract::access; static void static_invariant() { // Optional (as for non-static). BOOST_CONTRACT_ASSERT(...); ... } public: static void f(...) { boost::contract::old_ptr<old_type> old_var; boost::contract::check c = boost::contract::public_function<u>() .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 static public functions that do not have preconditions, postconditions and exception guarantees, within classes that have no static invariants.
See Also:
Template Parameters: |
|
||
Returns: |
The result of this function must be explicitly assigned to a variable of type |