| Home | Libraries | People | FAQ | More

## Macro BOOST_CONTRACT_INVARIANT_FUNC

BOOST_CONTRACT_INVARIANT_FUNC — Define the name of the class invariant member function (`invariant` by default).

## Synopsis

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

    BOOST_CONTRACT_INVARIANT_FUNC

## Description

This macro expands to the name of the `const` and `const volatile` member functions that check class invariants and volatile class invariants respectively:

    class u {
        friend class boost::contract::access;

        void BOOST_CONTRACT_INVARIANT_FUNC() const {
            BOOST_CONTRACT_ASSERT(...);
            ...
        }

        void BOOST_CONTRACT_INVARIANT_FUNC() const volatile {
            BOOST_CONTRACT_ASSERT(...);
            ...
        }

        ...
    };

When used this way, users can redefine this macro if the invariant functions must have a name different from `invariant` (because of name clashes in user code, etc.).

| Note
C++ does not allow to overload member functions based on the `static` classifier, so this macro must always be defined to be different than the function name defined for `BOOST_CONTRACT_STATIC_INVARIANT_FUNC`.

See Also:

Class Invariants, Volatile Public Functions