Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for a snapshot of the master branch, built from commit c0bc0d89c9.
PrevUpHomeNext

Class template specify_postcondition_except

boost::contract::specify_postcondition_except — Allow to specify postconditions or exception guarantees.

Synopsis

// In header: <boost/contract/core/specify.hpp>

template<typename VirtualResult = void> 
class specify_postcondition_except {
public:
  // construct/copy/destruct
  ~specify_postcondition_except();

  // public member functions
  template<typename F> specify_except postcondition(F const &);
  template<typename F> specify_nothing except(F const &);
};

Description

Allow to specify functors this library will call to check postconditions or exception guarantees. This object is internally constructed by the library when users specify contracts calling boost::contract::function and similar functions (that is why this class does not have a public constructor).

See Also:

Postconditions, Exception Guarantees

Template Parameters

  1. typename VirtualResult = void

    Return type of the enclosing function declaring the contract if that is either a virtual or an overriding public function, otherwise this is always void. (Usually this template parameter is automatically deduced by C++ and it does not need to be explicitly specified by programmers.)

specify_postcondition_except public construct/copy/destruct

  1. ~specify_postcondition_except();
    Destruct this object.

    Throws: This is declared noexcept(false) since C++11 to allow users to program failure handlers that throw exceptions on contract assertion failures (not the default, see Throw on Failure).

specify_postcondition_except public member functions

  1. template<typename F> specify_except postcondition(F const & f);
    Allow to specify postconditions.

    Parameters:

    f

    Functor called by this library to check postconditions f() or f(result). Assertions within this functor are usually programmed using BOOST_CONTRACT_ASSERT, but any exception thrown by a call to this functor indicates a contract assertion failure (and will result in this library calling boost::contract::postcondition_failure). This functor should capture variables by (constant) references (to access the values they will have at function exit). This functor must be a nullary functor f() if VirtualResult is void, otherwise it must be a unary functor f(result) accepting the return value result as a parameter of type VirtualResult const& (to avoid extra copies of the return value, or of type VirtualResult or VirtualResult const if extra copies of the return value are irrelevant).

    Returns:

    After postconditions have been specified, the object returned by this function allows to optionally specify exception guarantees.

  2. template<typename F> specify_nothing except(F const & f);
    Allow to specify exception guarantees.

    Parameters:

    f

    Nullary functor called by this library to check exception guarantees f(). Assertions within this functor are usually programmed using BOOST_CONTRACT_ASSERT, but any exception thrown by a call to this functor indicates a contract assertion failure (and will result in this library calling boost::contract::except_failure). This functor should capture variables by (constant) references (to access the values they will have at function exit).

    Returns:

    After exception guarantees have been specified, the object returned by this function does not allow to specify any additional contract.


PrevUpHomeNext