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

Struct template call_if_statement<true, Then, void>

boost::contract::call_if_statement<true, Then, void> — Template specialization to handle static predicates that are true for then-branch functor template calls that return void (not needed on C++17 compilers, use if constexpr instead).

Synopsis

// In header: <boost/contract/call_if.hpp>

template<typename Then> 
struct call_if_statement<true, Then, void> {
  // construct/copy/destruct
  explicit call_if_statement(Then);

  // public member functions
  template<typename Else> void else_(Else const &) const;
  template<bool ElseIfPred, typename ElseIfThen> 
    call_if_statement< true, Then, void > else_if_c(ElseIfThen const &) const;
  template<typename ElseIfPred, typename ElseIfThen> 
    call_if_statement< true, Then, void > else_if(ElseIfThen const &) const;
};

Description

Usually this class template is instantiated only via the return value of boost::contract::call_if and boost::contract::call_if_c.

See Also:

Assertion Requirements

Template Parameters

  1. typename Then

    Type of functor template to call when the static predicate if true (as it is for this template specialization).

call_if_statement public construct/copy/destruct

  1. explicit call_if_statement(Then f);
    Construct this object with the then-branch functor template.

    Parameters:

    f

    Then-branch nullary functor template. The functor template call f() is actually compiled and executed for this template specialization (because the if-statement static predicate is true). The return type of f() must be void for this template specialization (because the then-branch functor template calls return void).

call_if_statement public member functions

  1. template<typename Else> void else_(Else const & f) const;
    Specify the else-branch functor template.

    Parameters:

    f

    Else-branch nullary functor template. The functor template call f() is never compiled or executed for this template specialization (because the if-statement static predicate is true). The return type of f() must be void for this template specialization (because the then-branch functor template calls return void).

  2. template<bool ElseIfPred, typename ElseIfThen> 
      call_if_statement< true, Then, void > else_if_c(ElseIfThen const & f) const;
    Specify an else-if-branch functor template (using a static boolean predicate).

    Parameters:

    f

    Else-if-branch nullary functor template. The functor template call f() is never compiled or executed for this template specialization (because the if-statement static predicate is true). The return type of f() must be void for this template specialization (because the then-branch functor template calls return void).

    Template Parameters:

    ElseIfPred

    Static boolean predicate selecting which functor template call to compile and execute.

    Returns:

    A call-if statement so the else statement and additional else-if statements can be specified if needed. Eventually, it will return void for this template specialization (because the then-branch functor template calls return void).

  3. template<typename ElseIfPred, typename ElseIfThen> 
      call_if_statement< true, Then, void > else_if(ElseIfThen const & f) const;
    Specify an else-if-branch functor template (using a nullary boolean meta-function).

    Parameters:

    f

    Else-if-branch nullary functor template. The functor template call f() is never compiled or executed for this template specialization (because the if-statement static predicate is true). The return type of f() must be void for this template specialization (because the then-branch functor template calls return void).

    Template Parameters:

    ElseIfPred

    Nullary boolean meta-function selecting which functor template call to compile and execute.

    Returns:

    A call-if statement so the else statement and additional else-if statements can be specified if needed. Eventually, it will return void for this template specialization (because the then-branch functor template calls return void).


PrevUpHomeNext